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)
首先,您必须在 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)
我想保存带有计算字段的 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)
首先,您必须在 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)