【发布时间】:2016-11-12 09:27:22
【问题描述】:
在 Django 中,我使用的具体继承如下:
Client 类是一个具体的父类,具有公共字段。客户可以是个人、合伙企业或公司……
注意:是的,我已经阅读了具体继承的缺点,但是我的数据库将会很小,我希望能够轻松地从 Client 表中强制执行唯一性约束。
对象名称属性仅驻留在子表中(因为个人有 FirstName、MiddleName、LastName 而公司没有)
我想使用父类中的 str(self) 方法返回个人、合伙企业或公司的名称,视情况而定。
在个人模型中,我有 name(self) 方法:
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
在 Client() 模型中,我有 str(self) 方法:
def __str__(self):
return self.name()
可以理解,当我必须获取所有客户端名称的列表时,我得到 'Client' object has no attribute 'name' 错误。
有没有办法让这个工作?对不起,我对面向对象编程概念和 Django 非常陌生。
【问题讨论】:
标签: python django inheritance django-models django-admin