2016-10-28 3 views
0

so was ich versuche zu erreichen, ist das folgende: Ich habe zwei Modelle A und B, die eine OneToOne Beziehung haben. Instanzen von Modell A sind immer vor ihren jeweiligen Modell B-Instanzen erstellt. Abhängig von einem Parameter möchte ich eine Instanz von Modell b mit unterschiedlichen Anfangswerten initialisieren können.Wie man Modellkonfigurationsvoreinstellungen in Django zur Verfügung stellt

Was ich habe kommen mit ist eine ProtoTypeModel zu definieren und es mit der eigentlichen Modellunterklasse wie folgt:

from django.db import models 
#other imports 

class PrototypeB(models.Model): 
    #define all fields 

class B(PrototypeB): 
    pass 

Durch die Verwendung von dict = PrototypeB.objects.filter(**my criteria).values()[0] oder eine benutzerdefinierte Serializer von Django Ruhe Rahmen, werde ich eine dict bekommen mit dem ich dann meine Instanz von Modell B instanziieren kann: B.objects.create(**dict).

Ist dies der richtige Weg, oder fehlt mir ein großer Punkt?

Best, D

Antwort

0

Falls jemand auf seinem Weg auf die gleiche Frage stolpert, ist hier, wie ich es tat. Zuerst dachte ich über die Implementierung der oben erwähnten Lösung nach. Bei der Untersuchung der Multi-Table-Vererbung habe ich jedoch festgestellt, dass dies tatsächlich nicht funktioniert.

Die Multi-Table-Vererbung erzeugt ein implizites OneToOne _ptr-Feld, das das Kaskadenlöschverhalten auslöst, wodurch meine Arche-Typ-Modelle gelöscht werden, wenn eine Instanz von B gelöscht wird.

Ich ging mit der Implementierung von zwei Modellen Prototyp B und B, die perfekt funktioniert.

Verwandte Themen