我正在执行一个基本的Django ModelForm*create/validate/保存 * 操作。在Eclipse调试器下运行代码时,当调用is_valid()
时,我的自定义clean方法没有被调用,并且我在表单创建和调用is_valid()
后设置了一个断点。
我已经跟踪了Django的基本代码很多次,似乎ModelForm类上的错误字典从来没有设置为None
,这触发了验证。我怀疑这是由于与调试器的交互访问了ModelForm的_errors
属性,以显示在变量窗格中。
当我删除所有断点并让代码自然流动时,我可以通过发出print语句来证明自定义干净代码正在运行。
这是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
3条答案
按热度按时间t9aqgxwy1#
我已经找到了“答案”,但这并不是答案。确切的用例是从一个客户那里接收一个CSV文件。在检查了客户的实际数据文件之后,数据字段被填充了空格--很多空格。我对输入进行了修剪,并将修剪后的字典插入到表单中,一切都正常了。但仍然没有解释为什么eclipse会在这一点上卡住。
b1uwtaje2#
我遇到了同样的问题,并试图深入挖掘一点,调试框架。
常规表单和模型表单之间可能存在差异,这导致它无法工作,但这个黑客(覆盖
is_valid()
而不是clean(...)
)对我很有效:brvekthn3#
如果您尝试: