@netxman: Tak bez znajomości kontekstu: - przy tworzeniu obu view tworzyłbym jakiś UserListFilter (nazwa na szybko) a pokazane metody by go odpytywały tylko (zakładając, że coś w nich będziesz jeszcze robić - bo jak nie to można pomyśleć o dziedziczeniu po prostu), - nie ciągnąłbym całego request, tylko np. user (to już tylko kwestia czytelności i bardzo indywidualnie) + jw.
http://wklej.org/hash/e7ab535b482/
Cel:
1. użytkownik typu requester powinien dostać tylko te obiekty które sam
dodał
2. użytkownik typu approver powinien widzieć wszystkie obiekty dodane przez użytkowników tej samej firmy
#python #django
Komentarz usunięty przez autora
- przy tworzeniu obu view tworzyłbym jakiś UserListFilter (nazwa na szybko) a pokazane metody by go odpytywały tylko (zakładając, że coś w nich będziesz jeszcze robić - bo jak nie to można pomyśleć o dziedziczeniu po prostu),
- nie ciągnąłbym całego request, tylko np. user (to już tylko kwestia czytelności i bardzo indywidualnie)
+ jw.
http://wklej.org/hash/126860d8f0c/
Ładniej by było schować tę logikę filtrowania do querysetu: https://docs.djangoproject.com/en/1.10/topics/db/managers/#calling-custom-queryset-methods-from-the-manager i wtedy metodę getqueryset w akcji skracasz do np.
return super(QsByUserRoleMixin, self).get_queryset().available_for(user=self.request.user)
a tam w środku już odpowiednio odfiltrowujesz queryset.
Dodatkowo, jak zmieniasz sam queryset, a nie nadpisujesz nic w managerze to można queryset zrzutować bezpośrednio na atrybut objects w modelu: https://docs.djangoproject.com/en/1.10/topics/db/managers/#creating-a-manager-with-queryset-methods