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

时间:2013-05-23 19:49:00

标签: 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)

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

我试过了:

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:79)

if user.partner_set.filter(slug=requested_slug).exists():
     # do some private stuff