我有一个很简单的问题要解决。我有一个合作伙伴模型,它至少与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对象,最Pythonic的检查User是否与Partner相关联的方法是什么?我基本上想要一条语句,如果User与Partner相关联,则返回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
),那么将其转换为一个装饰器会容易一些吗?
return HttpResponseForbidden()
。 - Peter DeGlopperPartner
与User
有关系,所以User
实例具有一个访问器属性partner_set
。有关详细信息,请参阅文档:https://docs.djangoproject.com/en/2.2/topics/db/queries/#related-objects - Peter DeGlopper