Я пытаюсь найти все экземпляры одной из моих моделей, у которой есть атрибут, установленный либо None, либо пустая строка. Я думаю, что мне не хватает чего-то в запросе ORM __in.Непоследовательные результаты запроса ORM Django с «Q» против «__in»
TextBlock.objects.filter(content='').count()
>185
TextBlock.objects.filter(content=None).count()
>235
TextBlock.objects.filter(content__in=['', None]).count()
>185
TextBlock.objects.filter(Q(content='')|Q(content=None)).count()
>420
TextBlock.objects.filter(content__in=[None, '']).count()
>185
Когда я делаю это с IntegerFIeld и не используя None или пустые строки, я получаю:
TextBlock.objects.filter(order=1).count()
> 575046
TextBlock.objects.filter(order=2).count()
> 11946
TextBlock.objects.filter(order__in=[1,2]).count()
> 586992
Это то, что я ожидал. Был ли я неправ, чтобы ожидать TextBlock.objects.filter(content__in=['', None]).count()
, чтобы вернуть 420 результатов? Если да, то почему?
Q-запрос делает то, что я хочу, поэтому я закончу с этим, но мне все еще интересно, почему этот третий запрос не сделал то, что я хотел.
Спасибо!
EDIT: Не уверен, если это имеет значение, но поле контента является models.TextField и поле порядка является models.IntegerField