Ich habe ein Modell wie das folgende, das zu groß wird und in eine separate aktive Tabelle aufgeteilt werden muss. Am Ende des Tages enthält eine Tabelle alle Objekte und die andere enthält nur aktive Objekte.Erstellen Sie Active/Archive-Modelle auf eine trockene Weise (Django)
class Tickets(models.Model):
price = ....
number = .....
date = ....
active = ....
parent = models.ForeignKey('self', related_name='children')
ManyMoreFields
Es gibt zwei Quellen der Komplexität:
1) Das übergeordnete Feld auf der ActiveTickets Tabelle auf die Tickets Tabelle zeigen wird. Der verwandte Name sollte nicht geändert werden.
2) Die ActiveTickets und Tickets-Tabelle haben beide Proxy-Modelle, die von ihnen erben.
class CityTickets(Tickets):
class Meta:
proxy = True
class ActiveCityTickets(ActiveTickets):
class Meta:
proxy = True
Offensichtlich konnte ich einfach alle Felder in Ticket kopieren und einfügen (es gibt viele), aber das ist nicht der richtige Weg, es zu tun. Ich habe versucht, abstrakte Vererbung und Mixins (Definieren der Felder in einer separaten Klasse, die von Tickets und ActiveTickets vererbt wird) zu verwenden.
Ein Problem mit der abstrakten Vererbung ist, dass das ForeignKey-Feld, Eltern, Probleme verursacht, da es doppelt ist und der verwandte Name derselbe ist. Im Allgemeinen haben meine Versuche dazu geführt, dass meine Geräte- und Funktionstests fehlgeschlagen sind.
Was sind einige elegante Ansätze hier? Sollte ich darüber nachdenken, zwei separate MySQL-Tabellen zu erstellen und dann nur ein einzelnes Modell mit mehreren Managern (und DB-Routern) zu verwenden? Ist das vernünftig?
Hey William, ich bin nicht sicher, dass das beantwortet meine Frage in ihrer Gesamtheit, aber es ist ein großer Link. Ich habe diesen Teil der Django-Dokumentation noch nie zuvor gesehen. Vielen Dank! – Ben