2 Stimmen

Wie kann ich ein Modell abfragen, ob es eine Unterklasseninstanz gibt?

Ich habe diese beiden einfachen Modelle, A und B:

from django.db import models

class A(models.Model):
  name = models.CharField(max_length=10)

class B(A):
  age = models.IntegerField()

Wie kann ich nun nach allen Instanzen von A suchen, die keine Instanz von B haben?

Die einzige Möglichkeit, die ich gefunden habe, erfordert ein explizit eindeutiges Feld für jede Unterklasse, das NICHT NULL ist, so dass ich zum Beispiel A.objects.filter(b__this_is_a_b=None) verwenden kann, um Instanzen zu erhalten, die nicht auch B-Instanzen sind. Ich suche nach einer Möglichkeit, dies zu tun, ohne ein explizites dummes Flag wie dieses hinzuzufügen.

Ich möchte auch nicht alle Objekte abfragen und sie dann in Python filtern. Ich möchte die DB dazu bringen, dies für mich zu tun, was im Grunde etwas ist wie SELECT * FROM A WHERE A.id in (SELECT id from B)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X