Cau Fosile, jmeno toho "getteru" mi hlava nebere, ale co kdyby vnitrek byl neco ala:
@property def state(self): self.in_state('published') | self.in_state('expired') ..... Hm? --- aknerats[::-1] On Tue, Jun 18, 2019, 22:57 Fosil <filip.f.no...@gmail.com> wrote: > Zdravím, > řeším následující problém: > > Mám model: > > class Article(models.Model): > ... > publication_start = models.DateTimeField("Zacatek publikace") > publication_end = models.DateTimeField("Konec publikace") > approved = models.BooleanField("Schváleno", default=False) > ... > > > # k tom u custom queryset > > objects = ArticleQuerySet.as_manager() > > > > class ArticleQuerySet(models.QuerySet): > > > > def in_state(self, state): > > > now = timezone.now() > > > # draft > if state == 'draft': > return self.filter(approved=False) > > > # published > if state == 'published': > return self.filter(approved=True).filter(publication_start__lte=now > ).filter(publication_end__gte=now) > > > # expired > if state == 'expired': > return self.filter(approved=True).self.filter(publication_end__lte= > now) > > > a zároveň chci v tom modelu mít definovaný getter, který mi pro konkrétní > instanci vrátí její stav > tzn.: > > class Article(models.Model): > > ... > ... > @property > def state(self): > # tady v podstate (alepon tedy ideove) stejny kod jako v > ArticleQuerySet.in_state, ale vraci hodnoty 'draft'|'published'|'expired' > > > a teď už konečně otázka: > šlo by to nějak napsat aby buznys logika toho rozhodování stavu byla na > jednom místě - páč když se změní tak jí musím přepisovat na dvou místech a > to neprospívá kódu ani životnímu prostředí :-) > > Díky za každé nakopnutí (v pozitivním smyslu slova) > > -- > -- > E-mailová skupina django-cs@googlegroups.com > Správa: http://groups.google.cz/group/django-cs > --- > Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny > „django-cs“ ve Skupinách Google. > Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, > zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com. > Chcete-li tuto diskusi zobrazit na webu, navštivte > https://groups.google.com/d/msgid/django-cs/026b41c8-4798-46db-bdee-56c6bfad5d8a%40googlegroups.com > <https://groups.google.com/d/msgid/django-cs/026b41c8-4798-46db-bdee-56c6bfad5d8a%40googlegroups.com?utm_medium=email&utm_source=footer> > . > Další možnosti najdete na https://groups.google.com/d/optout. > -- -- E-mailová skupina django-cs@googlegroups.com Správa: http://groups.google.cz/group/django-cs --- Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google. Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu django-cs+unsubscr...@googlegroups.com. Chcete-li zobrazit tuto diskusi na webu, navštivte https://groups.google.com/d/msgid/django-cs/CA%2B7MNVpxNnXi0LN3JhOL6JZQCYEAVnp_Hn1TWd8UkRkunry%3D%3Dg%40mail.gmail.com. Další možnosti najdete na adrese https://groups.google.com/d/optout.