Django检查ManyToMany字段中是否有对象

Dar*_*ech 54 django django-models django-views

我有一个很简单的问题需要解决.我有合作伙伴模型,其中有> = 0个与之关联的用户:

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

现在,如果我有一个User对象并且我有一个Partner对象,那么检查User是否与Partner关联的最Pythonic方法是什么?我基本上想要一个语句,如果User与之关联,则返回True Partner.

我试过了:

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

这有效,但我感觉有更好的方法.另外,这很容易卷入装饰器,请记住我需要一个命名参数(slug)和一个请求对象(user).

任何帮助将非常感激.

Pet*_*per 82

if user.partner_set.filter(slug=requested_slug).exists():
     # do some private stuff
Run Code Online (Sandbox Code Playgroud)


Anu*_*pam 8

如果我们只需要知道一个user对象是否与另一个对象关联partner,我们可以执行以下操作(如本答案所示):

if user in partner.user.all():
    #do something
Run Code Online (Sandbox Code Playgroud)