设置不属于模型窗体一部分的模型字段的值

2024-10-03 02:48:00 发布

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

我有一个这样的模型

class Income(models.Model):
    value = models.DecimalField(max_digits=10, decimal_places=2)
    remitted = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)

我有这样的表格

^{pr2}$

现在在modelform中,如何更新remitted字段的值? 我似乎无法以这种方式访问remitted字段。我在Django 2.0上


Tags: 模型defaultmodelvaluemodelsmaxclass表格
2条回答

这与字段是否在表单上无关。在

您犯了两个错误:首先,您试图访问self.remitted,而不是self.cleaned_data['remitted'];其次,remitted在调用clean_value时不会被清除。在

{5>重写来自cd5}方法的多个字段:

 def clean(self):
      value = self.cleaned_data["value"]
      remitted = self.cleaned_data["remitted"]
      if value < remitted:
          self.add_error("value", "Error message")

我从文档中阅读了一些关于Validation on a ModelForm的内容,最后我能够在表单中提出错误。下面是完整的代码。在

尤其是我需要的。上面写着:

A model form instance attached to a model object will contain an instance attribute that gives its methods access to that specific model instance.

class EditIncomeForm(forms.ModelForm):
    class Meta:
        model = Income
        fields = ("value", )

    def clean(self):
        value = self.cleaned_data['value']
        remitted = self.instance.remitted # access other model field.
        if value <= remitted:
            self.add_error("value", "Error message.")

相关问题 更多 >