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.

Reply via email to