我正在執行基本的Django ModelForm創建/驗證/保存操作。當在Eclipse調試器下運行代碼時調用is_valid()並且在創建表單和調用is_valid()後設置斷點時,我的自定義clean方法未被調用。Django ModelForm不叫乾淨
我已經多次查詢過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)
forms.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
嘗試:FF = OrderTestForm(數據=行) – Brandon
感謝您的建議。我沒有改變就試過了。我應該澄清這個問題。如果我在ModelForm創建和STEP上有一個Eclipse斷點,然後恢復,那麼幹淨的斷點不會被觸發。但是,在我執行第一步之後,清理中的任何打印語句都會打印出來。這意味着,我相信,當Eclipse試圖訪問ModelForm對象來讀取它的屬性時,它會激發乾淨。根據Django文檔,這是預期的行爲。但是,它會產生一個問題,因爲is_valid()將無法正常工作。 –
您可以發佈您的完整測試用例嗎? – Brandon