2010-05-30 119 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/