获取不同的值从一个queryset django?



我有2个外键模型。

class NewModel(models.Model):
user_id = models.ForeignKey(User, on_delete=models.CASCADE)
user_g_id = models.ForeignKey(User, on_delete=models.CASCADE)

这是我的查询集。它计算了男性用户的数量,但我希望两个字段中的男性用户数量不同。

male_count = newmodelqueryset.filter(
Q(user_id__gender_id=male['id']) | Q(user_g_id__gender_id=male['id'])).count()

过滤器可能会导致一个LEFT OUTER JOIN,这样相同的对象,但有不同的相关对象,被返回多次。

你可以计算不同主键的个数:

male_count = newmodelqueryset.filter(
Q(user_id__gender_id=male['id']) | Q(user_g_id__gender_id=male['id'])
).values('pk').distinct().count()