Я не знаю, является ли это ошибка django или функция, но у меня странное поведение ORM с MySQL.
class Status(models.Model):
name = models.CharField(max_length = 50)
class Article(models.Model)
status = models.ForeignKey(status, blank = True, null=True)
filters = Q(status__in =[0, 1,2] ) | Q(status=None)
items = Article.objects.filter(filters)
возвращает элементы товара, но некоторые имеют статус, отличный от запрошенного [0,1,2, нет]
глядя на запрос sql:
SELECT [..] FROM `app_article` LEFT OUTER JOIN `app_status` ON (`app_article`.`status_id` = `app_status`.`id`) WHERE (`app_article`.`status_id` IN (1, 2) OR `app_status`.`id` IS NULL) ORDER BY [...]
часть OR app_status.id IS NULL
, кажется, причина. если я изменю его на OR app_article.status_id IS NULL
, он будет работать правильно.
Как с этим бороться?
Thanx.