it-swarm.com.de

Django prüfe ob Objekt in ManyToMany Feld

Ich habe ein ziemlich einfaches Problem zu lösen. Ich habe ein Partnermodell, dem> = 0 Benutzer zugeordnet sind:

class Partner(models.Model):
    name = models.CharField(db_index=True, max_length=255)
    slug = models.SlugField(db_index=True)
    user = models.ManyToManyField(User)

Nun, wenn ich ein Benutzerobjekt und ein Partnerobjekt habe, wie kann Pythonic am besten überprüfen, ob der Benutzer einem Partner zugeordnet ist? Grundsätzlich möchte ich eine Anweisung, die True zurückgibt, wenn der User dem Partner zugeordnet ist.

Ich habe versucht:

users = Partner.objects.values_list('user', flat=True).filter(slug=requested_slug)
if request.user.pk in users:
    # do some private stuff

Das funktioniert, aber ich habe das Gefühl, es gibt einen besseren Weg. Wäre es außerdem einfach, sich in einen Dekorateur zu rollen, wenn man bedenkt, dass ich sowohl einen benannten Parameter (slug) als auch ein Anforderungsobjekt (user) benötige.

Jede Hilfe wäre sehr dankbar.

51
Darwin Tech
if user.partner_set.filter(slug=requested_slug).exists():
     # do some private stuff
81
Peter DeGlopper