eclipse Django ModelForm未调用clean

vm0i2vca  于 2022-11-04  发布在  Eclipse
关注(0)|答案(3)|浏览(132)

我正在执行一个基本的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
t9aqgxwy

t9aqgxwy1#

我已经找到了“答案”,但这并不是答案。确切的用例是从一个客户那里接收一个CSV文件。在检查了客户的实际数据文件之后,数据字段被填充了空格--很多空格。我对输入进行了修剪,并将修剪后的字典插入到表单中,一切都正常了。但仍然没有解释为什么eclipse会在这一点上卡住。

b1uwtaje

b1uwtaje2#

我遇到了同样的问题,并试图深入挖掘一点,调试框架。
常规表单和模型表单之间可能存在差异,这导致它无法工作,但这个黑客(覆盖is_valid()而不是clean(...))对我很有效:

def is_valid(self):
    #run whatever ModelForm validations you need
    return super(OrderTestForm, self).is_valid()
brvekthn

brvekthn3#

如果您尝试:

from order.models import TestModel1
from django.forms import ModelForm

class OrderTestForm(ModelForm):
    class Meta:
        model = TestModel1

    def clean_field1(self):
        value = self.cleaned_data['field1']
        print value 
        return value

    def clean_field2(self):
        value = self.cleaned_data['field2']
        print value 
        return value

相关问题