Django-model:在模型字段中保存计算值

Django-model: Save computed value in a model field

我想保存带有计算字段的 Django 模型,以便我可以对其应用搜索。

class TestModel(models.Model):
    x = models.CharField(max_length=16)
    z = models.CharField(max_length=16)

    # I want a field like below and also saves in databse
    # computed =  computed()

    def computed(self):
        result = self.x + self.y
        return result
class TestModel(models.Model):
    x = models.CharField(max_length=16)
    z = models.CharField(max_length=16)
    computed = models.CharField(max_length=32, editable=False)

    def save(self, *args, **kwargs):
        self.computed = self.x + self.y
        super(TestModel, self).save(*args, **kwargs)

Here is what editable option does. More.

首先,您必须在 TestModel 中定义 'computed' 字段。然后当您创建新的 TestModel 记录时,您可以在记录创建期间计算 x + y 并保存它。

TestModel.objects.create(x=x_value, y=y_value, computed=(x_value + y_value))

这应该可以做到。

我们应该覆盖 save() 方法。

class TestModel(models.Model):
    x = models.CharField(max_length=16)
    z = models.CharField(max_length=16)
    computed =  models.CharField(max_length=32)

    def get_computed(self):
        result = self.x + self.y
        return result

    def save(self, *args, **kwargs):
        self.computed = self.get_computed()
        super(TestModel, self).save(*args, **kwargs)