Dies ist Django ORM-ModelleDjango Serializer: mehrere Tabellen OneToOne Bezug auf eine Tabelle
class A(models.Model):
...
class B(models.Model):
a = models.Foreignkey(A, on_delete=models.CASCADE)
class C(models.Model):
a = models.Foreignkey(A, on_delete=models.CASCADE)
Und hier sind die Serializer:
class ASerializer(serializers.ModelSerializer):
class Meta:
model = A
class BSerializer(serializers.ModelSerializer):
a = ASerializer(many=False)
class Meta:
model = B
class CSerializer(serializers.ModelSerializer):
a = ASerializer(many=False)
class Meta:
model = C
B und C arbeiten wie erwartet.
Problem 1:
Nun, wenn ich will von b = BSerializer(many=False)
und c = CSerializer(many=False)
Daten von B und C aus Serializer A zu tun bekommen. Ich bekomme einen Fehler, NameError: name 'BSerializer' is not defined
und wenn ich B und C Serializer über A-Fehler für Aserializer setzen. Wie behebe ich das?
Problem 2:
B und C haben eine Eins-zu-Eins-Beziehung mit A. Wenn also ein Serialisieren, könnte es nicht ein nachfolgendes B oder C oder sowohl Daten in Tabellen B und C haben. Also, in ASerializer
b = BSerializer(many=False)
c = CSerializer(many=False)
möglicherweise Fehler geben, wenn es keine Beziehung zwischen A und C für eine bestimmte Zeile ist. Wie behebe ich das?
Hinzufügen Definition von A nach B und C würde immer noch den Fehler geben, weil B und C A. mit –
Hmm, gut Sie etwas Wirkliches Hacky versuchen könnten, durch eine andere Serializer Klasse am Ende hinzufügen, die nur eine Unterklasse : 'Klasse HackyClassA (A): pass ' –