A と B の 2 つの単純なモデルがあります。
from django.db import models
class A(models.Model):
name = models.CharField(max_length=10)
class B(A):
age = models.IntegerField()
では、B のインスタンスを持たない A のすべてのインスタンスを照会するにはどうすればよいでしょうか?
私が見つけた唯一の方法は、各サブクラスに NOT NULL である明示的に一意のフィールドを必要とするため、たとえば A.objects.filter(b__this_is_a_b=None) を実行して、B インスタンスでもないインスタンスを取得できます。そのような明示的なばかげたフラグを追加せずにこれを行う方法を探しています。
また、すべてのオブジェクトに対してクエリを実行してから、Python でそれらをフィルター処理したくもありません。DBにそれをさせたいのですが、これは基本的に次のようなものですSELECT * FROM A WHERE A.id in (SELECT id from B)