In Django zu holen, ich bin mit konkretem Erbe wie folge:django konkretes Erbe, __str __ (self) in Eltern versagt Attribut von Kind
die Client-Klasse ist ein konkret Eltern, die allgemeinen Felder habe. Ein Kunde kann eine Einzelperson oder eine Partnerschaft oder ein Unternehmen sein ...
Hinweis: Ja, ich habe die Nachteile der konkreten Vererbung gelesen, aber meine Datenbank wird klein sein, und ich möchte es sein in der Lage, Eindeutigkeitsbedingungen aus der Client-Tabelle einfach zu erzwingen.
Ein Objekte Namensattribut in der Tabelle nur Kind wohnt (Weil ein indiviual hat Vorname, Zweiter Vorname, Nachname, während ein Unternehmen nicht)
Ich möchte die str (Selbst-) -Methode von der verwenden Elternklasse, um den Namen der Einzelperson, der Partnerschaft oder des Unternehmens zurückzugeben, je nachdem.
Im Einzel Modell, ich habe die Namen (Selbst-) Methode:
def name(self):
if self.Middle_Name is None:
return self.First_Name + " " + self.Last_Name
else:
return self.First_Name + " " + self.Middle_Name + " " + self.Last_Name
Im Client() Modell habe ich die str (Selbst-) Methode:
def __str__(self):
return self.name()
Verständlicherweise bekomme ich die 'Client' Objekt hat kein Attribut 'Name' Fehler, wenn ich eine Liste aller Client-Namen bekommen muss.
Gibt es eine Möglichkeit, dies zu erreichen? Es tut mir leid, ich bin sehr neu in objektorientierten Programmierkonzepten und zu Django.
Danke, aber ich wollte die __str verwenden __ (Selbst-) Methode in der übergeordneten Klasse, für django Administrator in der Lage sein, alle Kunden zu verzeichnen, unabhängig von den Unterschieden in ihren Namensregeln. __str __ (Selbst-) Methode. Ich hoffe ich mache Sinn. Danke –
Das hat mit diesem Code überhaupt nichts zu tun. Wenn Sie sich im Django-Admin die Listenseite für Einzelpersonen ansehen, sind * alle * Instanzen Einzelpersonen, selbst wenn sie auch Clients sind. Also * keine * von ihnen wird Middle_Name Attribute haben. –
Nur noch eine Frage, was meinst du mit "class Client (Individual):", denn es ist Individuum, das vom Client erbt, nicht umgekehrt. –