我在每个Django模型中都需要三个函数:
def __unicode__(self):
return self.MODELNAME_name
def get_absolute_url(self):
return "/MODELNAME/list/"
def get_fields(self):
return [(field, field.value_to_string(self)) for field in MODELNAME._meta.fields]
唯一不同的是MODELNAME
如何使用继承,以便在一个类中使用三个函数而从其中继承其他函数?
答案 0 :(得分:2)
您可以使用多重继承:
class CommonFunctions(object):
def __unicode__(self):
return self.MODELNAME_name
def get_absolute_url(self):
return "/MODELNAME/list/"
def get_fields(self):
return [(field, field.value_to_string(self)) for field in MODELNAME._meta.fields]
class ZeModel(models.Model, CommonFunctions):
[...]
x = ZeModel()
x.get_absolute_url()
(确保将MODELNAME
替换为self.__class__.__name__
)
我没有对此进行测试,但它应该有效。
答案 1 :(得分:0)
你根本不需要任何东西。 self
已经引用了相关的类。
答案 2 :(得分:0)
丹尼尔的回答是正确的。但是如果你想要一个字符串,那就是当前模型的名称,你可以使用:
self._meta.verbose_name_raw