我正在执行基本的 Django ModelForm 创建/验证/保存 操作。当在 Eclipse 调试器下运行代码时调用 is_valid()
时,我的自定义清理方法未被调用,我在创建表单和调用 is_valid()< 后设置断点
.
我多次跟踪 Django 基本代码,似乎 ModelForm 类上的错误字典从未设置为触发验证的 None
。我怀疑这是由于与调试器的交互访问 ModelForm 的 _errors
属性以显示在变量 Pane 中。
当我删除所有断点并让代码自然流动时,我可以通过发出打印语句来证明自定义干净代码正在运行。
这是 Django ModelForm 设计中的缺陷、Eclipse 问题还是我找错了树?
模型.py:
from django.db import models
class TestModel1(models.Model):
field1 = models.CharField(max_length=45)
field2 = models.IntegerField(default=2)
field3 = models.CharField(max_length=45, null=True, blank=True)
表单.py:
from order.models import TestModel1
from django.forms import ModelForm
class OrderTestForm(ModelForm):
def clean_field1(self):
return self.cleaned_data['field1']
def clean_field2(self):
return self.cleaned_data['field2']
class Meta:
model = TestModel1
我的测试工具:
from forms import OrderTestForm
row = {'field1': 'test value', 'field2': '4', }
ff = OrderTestForm(row)
#ff.full_clean()
if ff.is_valid():
ff.save()
else:
print ff.errors
最佳答案
我找到了某种程度上不是答案的“答案”。确切的用例是从客户那里接收 CSV 文件。检查客户的实际数据文件后,数据字段被空格填充——很多空格。我修剪了输入并将修剪过的字典插入表格,一切正常。仍然没有解释为什么 eclipse 对此感到窒息。
关于python - Django ModelForm 没有调用 clean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646508/