2016-10-01 9 views
0
でユーザー

私は、現在のユーザーがcollaborators M2M分野であるかどうかを確認しようとしているが、というエラーを取得しておくのですかどうかを確認してください:のManyToManyField

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 

答えて

0

完全ドキュメントはあなたが

if company.user == user or company.collaborators.filter(collaborators=user): 
を使用することができます here

です

または

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

私が原因空の場合Falseであると評価されるfilter(collaborators=user)戻りリストに.exists()を追加する必要がないと思います。

+0

両方の方法で、「Managerは企業インスタンス経由でアクセスできない」というエラーが表示されます。 – jape

+0

ええ、あなたは正しいです、私は少し変わった、それで今働くかもしれません。 – heykarimoff

+0

ありがとう!それは今働いた – jape

関連する問題