Элемент django имеет больший len после применения другого фильтра
Как показано ниже, я пытаюсь применить новый фильтр к моему набору запросов idmatch. Но он возвращает новый набор, в котором больше объектов, чем в первом.
idmatch = IdMatch.objects.filter(idsport=idsport)
idmatchcount = idmatch.count()
idmatch_liematch = idmatch.filter(match__isnull=False)
count = idmatch_liematch.count()
print(idmatchcount, count)
605 634
Я не понимаю, как это возможно, что я получил большую длину после применения нового фильтра.
Отношение между IdMatch и Match является :
class IdMatch(models.Model):
match = models.ManyToManyField(Match)
Ps : Я проверяю набор запросов 'idmatch_liematch' и он получил несколько двойных пк... Кто-нибудь знает почему и можно ли сделать то же самое без двойных пк.
Спасибо
Сделает LEFT OUTER JOIN
и посчитает для каждого IdMatch
количество связанных Match
es. Это означает, что если IdMatch
связан с двумя Match
, то он будет подсчитан дважды.
Вы можете подсчитать количество объектов с помощью .distinct()
[Django-doc]:
idmatch_liematch = idmatch.filter(match__isnull=False).distinct()
count = idmatch_liematch.count()