我想知道是否有可能在返回字段时覆盖字段的默认值。假设我有一个模型:

class ModelA(models.Model)
    name = models.CharField(max_length=30)

有没有办法打电话
modela_instance.name

可以返回修改后的值,例如name +“foo”,但是默认情况下在模型本身中运行了附加foo的代码,所以我要做的就是调用name来获取附加值?

我应该详细说明一下,我实际上希望做的是在模型中包含一个方法:
def get_name(self):
     return self.name + " foo"

或类似名称,并且只希望该get_name方法覆盖对“名称”字段的调用。

最佳答案

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

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)

关于Django模型: Override a field return value,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10382849/

10-12 00:24
查看更多