Django动态表单渲染

时间:2015-06-09 22:55:40

标签: python html django forms

我遇到了目前与django有关的任务。有很多关于创建动态表单的教程,但我的问题更多的是关于获取正确的HTML。

我有几个模型实例,让我们

class SomeModel(models.Model):
    field1=models.CharField(max_length=20)
    field2=models.CharField(max_length=20)

我需要的是向用户显示一个HTML页面,其中多个表单代表几个SomeModel实例。 问题是我希望只有一些表单会让用户有机会只输入field1,有些只允许输入field2而有些只能输入。

对于我不希望编辑的字段,我想将其内容显示为标签。因此,例如在我的数据库中,我有树SomeModel实例,它们有field1和field2('aaa','bbb'),('cccc','dddd')和('eeeee','fffff')。我有信息,我只想在第一个实例中编辑field1,在第二个唯一的字段2是可编辑的,并且允许编辑field1和field2。

呈现我想要的HTML看起来有点像这样

<form method="post" action="">
 <input name="some_model_id" type="hidden" value="0"> 
 <label>some Model 0 field1</label><input type="text" name="someModel-0-field1" value="aaa" id="id_form-0-title" />  
<label>bbb</label>

<input name="some_model_id" type="hidden" value="1"> 
<label>cccc</label>
<label>some Model 1 field2</label><input type="text" name="someModel-1-field2" value="dddd" id="id_form-0-title" />  

<input name="some_model_id" type="hidden" value="2"> 
<label>some Model 2 field1</label><input type="text" name="someModel-2-field1" value="eeeee" id="id_form-0-title" />  
<label>some Model 2 field2</label><input type="text" name="someModel-2-field2" value="fffff" id="id_form-0-title" />  

<input name="Submit" type=submit value="Submit">  
</form>

我希望通过django usualy,验证等方式从表单中恢复数据。 我知道有几种形式有formsets,但我不知道如何在这里使用它们。 此外,我希望我可以先创建一个表单,然后说出我想要编辑的内容,而不是将此信息传递给__init__。

实现这个的pythonic方法是什么? 谢谢!

0 个答案:

没有答案