Djang中的持久计算字段

2024-05-15 21:07:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在mssqlserver中,有一个创建计算列的功能:在检索时动态计算的表列。这或多或少地映射到使用Django模型上的一个方法来检索计算值(常见的例子是根据存储的Forename/姓氏字段检索全名)。在

对于昂贵的操作,SQLServer提供了Persisted选项。这将使用计算结果填充表列,并在更新表时更新这些结果—当计算速度不快但与access相比不经常更改时,这是一个非常有用的功能。在

但是,在Django中,我无法找到复制此功能的方法。我错过了什么明显的东西吗?我最好的猜测是某种自定义字段,它将函数作为参数,但我看不到预先存在的那些字段。有更好的方法吗?在


Tags: django方法模型功能access选项动态例子
1条回答
网友
1楼 · 发布于 2024-05-15 21:07:40

一种方法是使用常规模型字段,该字段在保存对象时计算,例如:

class MyModel(models.Model):
    first_name = models.CharField(max_length=255)
    surname = models.CharField(max_length=255)

    # This is your 'persisted' field
    full_name = models.CharField(max_length=255, blank=True)

    def save(self, *args, **kwargs):
        # set the full name whenever the object is saved
        self.full_name = '{} {}'.format(self.first_name, self.surname)
        super(MyModel, self).save(*args, **kwargs)

您可以在admin中使用这个特殊字段read-only,也可以从任何模型表单中生成类似的exclude it。在

相关问题 更多 >