有没有一种在Django Model / Python类中创建派生属性的简单方法?

每个Django模型都有一个自动创建的默认主键ID.我希望模型对象具有另一个属性big_id,其计算方法如下:
big_id = id * SOME_CONSTANT

我想访问big_id作为model_obj.big_id,而没有相应的数据库表有一个名为big_id的列.

这可能吗?

最佳答案
好吧,django模型实例只是python对象,所以我还是被告知了:P

我就是这样做的:

class MyModel(models.Model):
    CONSTANT = 1234
    id = models.AutoField(primary_key=True) # not really needed, but hey

    @property
    def big_id(self):
        return self.pk * MyModel.CONSTANT

显然,如果您尝试使用未保存的模型,则会出现异常.您还可以预先计算big_id值,而不是每次访问时计算它.

转载注明原文:有没有一种在Django Model / Python类中创建派生属性的简单方法? - 代码日志