2017-01-19 4 views
1

モデルは "User"と "Match"モデルです。この2番目のモデルは常に2人のユーザーを接続するために使用されます。私は2つの特定のユーザーを持つ "一致"の検索をしようとしています。正確にManyToManyFieldのレコードを取得する

最初のアイデアはupdate_or_createを使用することでしたが、私はそれが不可能であることを発見しました。だから私はget_or_createに行ったが、今は簡単なFilterを試してみた。

Iが得た最大の一致モデルの値を繰り返すことである(同じ値を持つ2つの結果を得る)

試験1

query = reduce(operator.or_, (Q(users__user__uuid=item) for item in LIST)) 
result = Match.objects.filter(query) 

数:0

テスト2

test = Match.objects.filter(users__user__in=LIST)) 

数:0

試験3

test = Match.objects.filter(users__in=LIST) 

数:2(複製)


LIST = FUNCTION:

def list_uuid(user1, user2): 
    return {str(user.uuid), str(user2.uuid)} 

答えて

1

これを試してください:

qs = Match.objects.filter(uuid__in=user1.matches.all(), users=user2) 
関連する問題