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