查看 ManyToManyField 中的用户

See if user in ManyToManyField

我正在尝试查看当前用户是否在 collaborators m2m 字段中,但不断收到错误提示:

Cannot query "John Doe": Must be "Company" instance.

有人可以帮我解决条件语句吗?

models.py:

class MyUser():
    name = ...
    email = ...

class Company(models.Model):
    user = models.ForeignKey(MyUser, null=True,
                             related_name='company_owner',
                             on_delete=models.SET_NULL)
    collaborators = models.ManyToManyField(MyUser, blank=True, 
                                           related_name='company_collaborators')
    name = models.CharField(max_length=120)

views.py:

def company_dash(request, username):
    user = request.user
    company = get_object_or_404(
        Company, Q(is_active=True), username=username)

    # NEED HELP HERE PLEASE
    if company.user == user or company.collaborators.filter(company_collaborators=user).exists():
        # do something

完整文档是 here

你可以使用

if company.user == user or company.collaborators.filter(collaborators=user):

if company.user == user or company.collaborators.filter(id=user.id):

我认为没有必要添加 .exists(),因为 filter(collaborators=user) returns 列表如果为空将被评估为 False