[django]: Models-Klassen mit normalen Attributen ergänzen?
Verfasst: Montag 16. August 2010, 21:02
Hallo Leute
Ich bin ein neuer in der Django-Welt und habe leider keine Möglichkeit das Folgende zur Zeit auszuprobieren.
Heute habe ich mir die Datenstruktur meines neuen Projektes durch den Kopf gehen lassen. Die Models in models.py zu definieren war einfach. Ich habe zum Beispiel ein Model namens Arbeitgeber.
Dieses benutze ich, um wichtige (Meta-)Daten über den Arbeitnehmer in die Datenbank zu speichern und den Arbeitnehmer in einem anderen Model mit models.ForeignKey('Arbeitnehmer', Arbeitnehmer) zu referenzieren. So weit so gut.
Jetzt gibt es aber für den Arbeitnehmer auch Daten, die eher temporäre Daten sind. Das heißt die haben nichts in der Datenbank verloren. Außerdem gibt es auch einige Funktionen, die dem Arbeitgeber zugeordnet werden.
Ich als braver Pythoner habe natürlich gelernt, dass da ne Klasse "Arbeitnehmer" das richtige ist, die mit ich mit Attributen und Methoden spicke.
Da kam mir die Idee ob ich das nicht auch einfach im Model hinzufügen kann. Also Attribute, die keine Tabellenfelder sind.
Also etwa so:
Hat das dann - wenn es funktioniert - negative Seiteneffekte? Schließlich wird die Model-Klasse ja nicht von object, sonder von models.Model abgeleitet. Kann ich dann in allen Fällen auch so drauf zugreifen, wie auf ein normales Model:
Würde das immer einfach so funktionieren?
Ich bin ein neuer in der Django-Welt und habe leider keine Möglichkeit das Folgende zur Zeit auszuprobieren.
Heute habe ich mir die Datenstruktur meines neuen Projektes durch den Kopf gehen lassen. Die Models in models.py zu definieren war einfach. Ich habe zum Beispiel ein Model namens Arbeitgeber.
Code: Alles auswählen
class Arbeitnehmer(models.Model):
#einige Tabellenfelder
vorname = models.CharField('Vorname', max_length=50)
Jetzt gibt es aber für den Arbeitnehmer auch Daten, die eher temporäre Daten sind. Das heißt die haben nichts in der Datenbank verloren. Außerdem gibt es auch einige Funktionen, die dem Arbeitgeber zugeordnet werden.
Ich als braver Pythoner habe natürlich gelernt, dass da ne Klasse "Arbeitnehmer" das richtige ist, die mit ich mit Attributen und Methoden spicke.
Da kam mir die Idee ob ich das nicht auch einfach im Model hinzufügen kann. Also Attribute, die keine Tabellenfelder sind.
Also etwa so:
Code: Alles auswählen
class Arbeitnehmer(models.Model):
#einige Tabellenfelder
vorname = models.CharField('Vorname', max_length=50)
#und einige normale Attribute
tmp_projekt = ""
#und Methoden
def change_project():
pass
Code: Alles auswählen
a = Arbeitnehmer.objects.filter(id=13)
a.tmp_projekt