1
有一個模型「用戶」和「匹配」,此第二個模型用於始終連接2個用戶。我正在嘗試搜索具有兩個特定用戶的「匹配」。準確檢索記錄ManyToManyField
class User(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False, db_index=True)
email = models.EmailField(_('email address'), blank=False, unique=True, db_index=True)
class Match(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True)
users = models.ManyToManyField(User, related_name='matches')
最初的想法是使用update_or_create,我發現這是不可能的。所以我去了get_or_create,但現在我嘗試了一個簡單的過濾器。
我得到的最大的是重複匹配模式的價值(獲得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)}