Ich habe diese Modelle:Wie man eine Oberklassenmethode aufruft und die Unterklassenimplementierung zurückbringt?
from django.db import models
class Item(models.Model):
# ...
def __str__(self):
return 'item'
class SubItemA(Item):
# ...
def __str__(self):
return 'subitem_a'
class SubItemB(Item):
# ...
def __str__(self):
return 'subitem_b'
Und ich will die __str__ Methode von jedem Punkt in Item.object.all() aufrufen und jede Unterklasse Implementierung zurück, sondern nur die übergeordnete Klasse Implementierung zurück.
Beispiel:
for item in Item.object.all():
print(item.__str__())
Auf meiner Datenbank Ich habe zwei SubItemA und zwei SubItemB. Als es zurückgibt:
item
item
item
item
würde Ich mag einige Sache wie diese haben:
subitem_a
subitem_a
subitem_b
subitem_b
ich hier bin verloren.
zu verwenden, mit dem Sie auf mehr Probleme stolpern werden. Eine saubere Lösung ohne ein Rad neu zu erfinden ist etwas wie Django Polymorph zu verwenden https://github.com/chrisglass/django_polymorph – yedpodtrzitko
@yedpodtrzitko Vielen Dank! Es löste mein Problem wie ein Zauber! Bitte, schreibe eine Antwort, damit ich dafür stimmen kann. – rhemzo