有一个模型"用户"和#34;匹配",第二个模型用于始终连接2个用户。我正在尝试搜索"匹配"有两个特定用户。
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(重复)
列表 =功能:
def list_uuid(user1, user2):
return {str(user.uuid), str(user2.uuid)}
答案 0 :(得分:1)
试试这个:
qs = Match.objects.filter(uuid__in=user1.matches.all(), users=user2)