Je ne sais pas si c'est un bug django ou une fonctionnalité mais j'ai un étrange comportement ORM avec MySQL.sur la liste, y compris Aucun
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)
ceci renvoie les éléments de l'article, mais certains ont un autre statut que demandé [0,1,2, Aucun]
regardant la requête 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 [...]
la partie OR app_status.id IS NULL
semble être la cause. si je le change en OR app_article.status_id IS NULL
cela fonctionne correctement.
Comment gérer cela?
Thanx.
solution: je crée mon ForeignKey valeur par défaut = 0 rendre inutile de filtrer les valeurs Aucun, et status__in = [0,1,2] fonctionne OK – jujule