2010-05-30 177 views
0

我有一個從各種模型生成的表單,各種值填充並坐在其他表中。因此,在這種情況下,我沒有使用內置的Django forms,即我沒有創建來自型號的表格)。Django形式「不」使用模型形式

現在從自制表格發佈的數據由view1處理,它應該相應地清理數據。我該如何去了解它,並使用各種功能,clean和定義validation errors(最好不做驗證邏輯視圖本身!)

編輯
我已經定義==> 3數據庫表3個的模型。現在將創建一個表格,顯示來自兩個模型的數據,然後將此表格中的數據保存在第三個表格中!在這種情況下,我自己創建了這個表單,並且我想使用表單功能來驗證這個自制表單的輸入。我應該怎麼做呢?如果我不能使用內置的表單功能,我在哪裏以及如何驗證此自制表單(不使用表單中的表單)

+0

你能更具體嗎?你說你不使用表單,但你談論乾淨和驗證錯誤,這是表單功能。 – KillianDS 2010-05-30 22:30:20

+0

你可以使用django表單而不需要任何模型,如果我理解正確,你問的是如何驗證POST數據。 – 2010-05-30 23:21:21

+0

查看問題本身的上述修改。 @rebus - 是的東西在這些線上,但然後我怎麼去處理它的驗證? – zubinmehta 2010-05-31 06:11:21

回答

2

我還不確定爲什麼你不能使用內置的表單驗證方法。

假設模型:

class A(models.Model): 
    a = models.CharField() 

class B(models.Model): 
    b = models.CharField() 

class C(models.Model): 
    c = models.CharField() 
    d = models.CharField() 

假設從A.aB.b值需要通過形式C.cC.d模式結束:

class MyForm(forms.Form): 
    a = forms.CharField() 
    b = forms.CharField() 

當您填寫並提交您的形式做一個標準驗證:

if request.method == "POST": 
    form = MyForm(request.POST) 
    if form.is_valid(): 
     model3 = C() # create 3rd model objects 
     model3.c = form.cleand_data['a'] # and assign values from form to it 
     model3.d = form.cleand_data['b'] 
     model3.save() # save the data into the 3rd table 

或者您可以使用model validation而不是表單驗證,但它或多或少是相同的原理。

或者我還沒有正確地讀你的問題?示例代碼總是受歡迎的。

0

視圖與表單的唯一交互作用是控制數據何時驗證,並做什麼,如果它是或不是有效,如,

if form.is_valid(): 
    do_something() 

否則一切都應該在窗體類來完成,使用clean_fieldname()和乾淨()方法。有關如何在表單中定義這些內容的更多信息,請參閱http://docs.djangoproject.com/en/dev/ref/forms/validation/