J'ai un modèle Django comme:Trouvez racines d'un grand nombre à plusieurs arbres de la catégorie dans Django
class Category(models.Model):
status=models.CharField(max_length=16)
machineName=models.CharField(max_length=50)
readableName=models.CharField(max_length=100)
description=models.CharField(max_length=1024)
parents=models.ManyToManyField('self')
Où chaque catégorie peut exister dans de nombreux parents. Certaines catégories n'ont pas de parents, ce sont les catégories «racine». En langage SQL simple, je pourrais les trouver par:
SELECT "readableName"
FROM foo_category AS c
LEFT JOIN foo_category_parents AS cp ON (c.id=cp.from_category_id)
WHERE cp.to_category_id IS NULL;
Et en effet, cela fonctionne bien. Comment trouver la "liste des catégories sans parents" avec un appel Django-y? J'ai essayé:
# Says "Cannot resolve keyword 'is_null' into field."
Category.objects.filter(parents__is_null=True)
# Says "Join on field 'id' not permitted."
Category.objects.filter(parents__pk_null=True)
Mais comme indiqué, aucun travail.
Magnifique merci , "symmetrical = False" et "parents = None" est exactement ce dont j'ai besoin. Et bien sûr, "parents = aucun" est une meilleure syntaxe que mes échecs! – arantius