Ich arbeite an einer Django-App. Ich habe eine Tabelle, und eine ihrer Spalten kann einen von vier Werten haben, und abhängig von diesem Wert muss sie eine Eins-zu-Eins-Beziehung mit einer anderen Tabelle haben, die Spalten hat, die für diesen Wert spezifisch sind.Django-Modell, das eine eins-zu-eins-Beziehung zu einer von vier möglichen Tabellen haben muss
Hier ist meine models.py:
from django.db import models
class Item(models.Model):
id = models.AutoField(primary_key=True)
type_choices = (
('A', 'Type A'),
('B', 'Type B'),
('C', 'Type C'),
('D', 'Type D'),
)
type = models.CharField(max_length=1, choices=type_choices)
class TypeA(models.Model):
item = models.OneToOneField(
Item,
primary_key=True,
)
# Type A specific fields
class TypeB(models.Model):
item = models.OneToOneField(
Item,
primary_key=True,
)
# Type B specific fields
class TypeC(models.Model):
item = models.OneToOneField(
Item,
primary_key=True,
)
# Type C specific fields
class TypeD(models.Model):
item = models.OneToOneField(
Item,
primary_key=True,
)
# Type D specific fields
Da mir nichts von der Erstellung anhält, sagen wir, eine Zeile in TypeA und eine Zeile in TypeB, mit Verbindungen zurück zu der gleichen Zeile in Punkt (was ist nicht etwas, was ich will) Ich bin sicher, etwas zu vermasseln irgendwann.
Kann ich alles, was ich in Django oder etwas anderem tun kann, mich gegen dieses Problem schützen?
Oder sollten meine Modelle vielleicht ganz anders strukturiert sein?
Prost
vielleicht check this out: http://stackoverflow.com/q/929029/2112269 – Aquiles
Ich bin nicht sicher, wie das mir hilft. Schlägst du vor, dass ich ein ForeignKey-Feld in meinem Artikelmodell habe? – 99lives
Das hilft mir nicht vermeiden zu vermeiden, mehrere ForeignKeys zu der einen Artikelzeile zu erstellen, die ich nicht möchte. – 99lives