私は次のような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')
各カテゴリが多くの親に存在する可能性がある場合。一部のカテゴリには親がなく、「ルート」カテゴリです。プレーンSQLでは、次の方法でそれらを見つけることができます。
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;
そして確かに、これはうまく機能します。Django-yの呼び出しで「親のないカテゴリのリスト」を見つけるにはどうすればよいですか?私は試した:
# 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)
しかし、前述のように、どちらも機能しません。