web-dev-qa-db-fra.com

Django vérifier si l'objet dans le champ ManyToMany

J'ai un problème assez simple à résoudre. J'ai un modèle de partenaire auquel> = 0 utilisateurs sont associés:

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

Maintenant, si j'ai un objet Utilisateur et un objet Partenaire, quelle est la façon la plus Pythonique de vérifier si l'Utilisateur est associé à un Partenaire? Je veux essentiellement une instruction qui renvoie True si le User est associé au Partner.

J'ai essayé:

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

Cela fonctionne, mais j'ai le sentiment qu'il existe une meilleure façon. De plus, cela serait-il facile de rouler dans un décorateur, sauf que j'ai besoin à la fois d'un paramètre nommé (slug) et d'un objet de demande (user).

Toute aide serait très appréciée.

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