Mam dość prosty problem do rozwiązania. Mam modelu partnerskiego, który> = 0 Użytkownicy z nim związane:Django sprawdź, czy obiekt w polu ManyToMany
class Partner(models.Model):
name = models.CharField(db_index=True, max_length=255)
slug = models.SlugField(db_index=True)
user = models.ManyToManyField(User)
Teraz, jeśli mam obiekt użytkownika i mam przedmiot partnera, co jest najbardziej pythonowy sposobem sprawdzenia, czy użytkownik jest związany z Partner? Zasadniczo chcę instrukcji, która zwraca True, jeśli User
jest powiązany z Partner
.
Próbowałem:
users = Partner.objects.values_list('user', flat=True).filter(slug=requested_slug)
if request.user.pk in users:
# do some private stuff
To działa, ale mam wrażenie, że jest lepszy sposób. Dodatkowo, czy byłoby to łatwe do zrolowania w dekoratorze, mając na uwadze, że potrzebuję zarówno nazwanego parametru (slug
), jak i obiektu żądania (user
).
Każda pomoc będzie mile widziana.
Awesome. Wiedziałem, że istnieje mniej gadatliwy sposób. Dziękuję Ci. –
Jak podnieść http403 w innym? Zwróć HttpResponseForbidden throws error – pythad
Zgaduję, ponieważ nie widzę twojego pełnego kontekstu, ale wygląda na to, że próbujesz zwrócić klasę. Zamiast tego musisz go utworzyć: 'return HttpResponseForbidden()'. –