我有以下代碼:模型繼承 - 如何使用重寫的方法?
# apps/models.py :
class Parent(models.Model):
name = models.CharField(max_length=80)
def __unicode__(self):
clist = ", ".join([x.__unicode__() for x in self.children.all()])
return self.name + clist
class Child(models.Model):
unit = models.ForeignKey(Parent, related_name='children')
desc = models.CharField(max_length=80)
def __unicode__(self):
return self.desc
class ChildA(Child):
text = models.TextField()
def __unicode__(self):
return self.text[:40]
我ChildA
類型的若干項。爲什麼當我詢問有關Parent
的__unicode__()
時,我得到的字符串是__unicode__()
方法的Child
生成的,而不是ChildA
的__unicode__()
方法生成的?
更新:
這是標準的行爲。除了以下答案之外,另一種可能的解決方案是inheritance cast
請出示一些證據表明您正在做您認爲正在做的事。 – Marcin 2012-03-19 14:15:32
**如果你剛開始接觸Django開發,我建議你使用[多表繼承(https://docs.djangoproject.com/en/dev/topics/db/models/#切莫多表繼承)。考慮使用更簡單,更少的容易出錯的方法。 [摘要基類(https://docs.djangoproject.com/en/dev/topics/db/models/#abstract-base-classes)會適合你。** – 2012-03-19 17:56:48