Django Models:覆盖字段返回值

PT1*_*114 6 django overriding field model

我想知道是否可以在返回字段时覆盖字段的默认值.说我有一个模型:

class ModelA(models.Model)
    name = models.CharField(max_length=30)
Run Code Online (Sandbox Code Playgroud)

有没有办法打电话

modela_instance.name 
Run Code Online (Sandbox Code Playgroud)

可以返回一个修改后的值,例如name +"foo",但是在模型本身中有默认运行foo的代码,所以我需要做的就是调用name来获取附加值?

我应该详细说明我实际上希望做的是在模型中有一个方法:

def get_name(self):
     return self.name + " foo"
Run Code Online (Sandbox Code Playgroud)

或类似的,只是希望get_name方法覆盖对"name"字段的调用.

Tim*_*ony 13

是的,您可以使用属性来执行此操作

class ModelA(models.Model)
    _name = models.CharField(...)

    def set_name(self, val):
        self._name = "%s - foo" % val

    def get_name(self):
        return self._name

    name = property(get_name, set_name)
Run Code Online (Sandbox Code Playgroud)