如何在Django的所有模型中使用类似的函数

如何在Django的所有模型中使用类似的函数,django,inheritance,django-models,Django,Inheritance,Django Models,我在每个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 MODEL

我在每个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


如何使用继承,以便在一个类中使用三个函数,而另一个从中继承?

您根本不需要任何东西
self
已经引用了相关类。

您可以使用多重继承:

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.\uuuuuuu class\uuuuuu.\uuuuuuuuu name\uuuuuuuu


我没有测试这个,但它应该可以工作。

丹尼尔的答案是正确的。但如果需要字符串,即当前模型的名称,则可以使用:

self._meta.verbose_name_raw

对不起,我不明白,你的意思是说我在使用
MODELNAME
的地方,我可以在那里使用
self
。目前我没有使用继承,所以我可以在一个类中声明所有这些,并通过替换MODELNAME来扩展其他类,就像这样
return”/self.\uu class.\uu name.\uuuu/list/“
我的意思是
return/{.0}/list/”。格式(self.\uu class.\uu name.
。。。我认为这显然是令人担忧的,我是python和Django方面的新手,再一次抱歉,上面的一个工作了,但这不起作用
格式(self.\uuuuuuuu class.\uuuuuu name.\uuu.\uu meta.fields