基本的な Django ModelForm の作成/検証/保存操作を実行しています。Eclipse デバッガーでコードを実行しているときに is_valid() が呼び出されているときにカスタムの clean メソッドが呼び出されず、フォームの作成と is_valid() の呼び出しの後にブレークポイントを設定しました。
Django ベース コードを何度もトレースしましたが、ModelForm クラスのエラー ディクショナリが None に設定されていないようで、検証がトリガーされます。これは、ModelForm の _errors 属性にアクセスして変数ペインに表示するデバッガーとの対話が原因であると思われます。
すべてのブレークポイントを削除し、コードが自然に流れるようにすると、print ステートメントを発行してカスタム クリーン コードが実行されていることを証明できます。
これは Django ModelForm 設計の欠陥ですか、Eclipse の問題ですか、それとも間違ったツリーを鳴らしていますか?
models.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