Получение разнородных значений из набора запросов 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()