我使用的Django的ModelForm静态表单域混合生成HTML表单,像这样:的Django如何检索的ModelForm后的数据和静态formfields混合在一起
Models.py:
class example(models.Model):
value_1 = models.PositiveIntegerField()
value_2 = models.PositiveIntegerField(unique=True)
value_3 = models.PositiveIntegerField()
value_4 = models.CharField(max_length=600)
value_5 = models.CharField(max_length=600)
label_1 = models.CharField(max_length=3)
label_2 = models.CharField(max_length=3)
label_3 = models.CharField(max_length=3)
def __str__(self):
return self.name
class ExampleForm(ModelForm):
class Meta:
model = example
fields = '__all__'
exclude = ['label_1','label_2','label_3']
模板(HTML):
<form method="post" action="" enctype="multipart/form-data">
<!-- Start static form fields -->
<input type="checkbox" checked="checked" name ="label_1" value="blabla">
<input type="checkbox" checked="checked" name ="label_2" value="blabla">
<input type="checkbox" checked="checked" name ="label_3" value="blabla">
<!-- End static form fields -->
<!-- Start Modelform fields -->
{% for field in form %}
<div class="form-group form-group-default required">
{{ field.label_tag }}
{{ field|addcss:'form-control' }}
<span class="text-danger">{{ field.errors }}</span>
</div>
{% empty %}
<h3 class="text-warning">Database lookup failed.</h3>
{% endfor %}
<!-- End Modelform fields -->
<button class="btn btn-complete btn-lg" type="submit"><i class="fa fa-save"></i></button>
</form>
HTML表单完美地与第一显示atic和动态表单字段。我可以请求形式值并看到他们像这样:
form = ExampleForm(request.POST)
return HttpResponse(form)
问题:
当我使用上述技术来请求POST数据I仅从的ModelForm接收后数据(动态字段)和而不是来自静态字段的数据!
我发现我可以从静态字段这样要求公布值:
label_1 = request.POST.get("label_1")
return HttpResponse(label_1)
上面的代码给我贴静态复选框的值。但是,现在我必须收集所有的静态字段,并且希望一次捕获所有发布的数据,并且要进一步处理它。
现在我的问题是什么,当我在Django中请求它们时,我没有得到所有的post值?我如何使其中包含模型形式值和静态表单域的所有后期数据变量为1?
希望我的问题很清楚,谢谢你们! :)
您明确删除从表单中的字段,所以当然他们在表格数据不是。你为什么会期待其他? –
因为我再次在HTML表单中再次添加manualy,如 –
是的。正如你所展示的,它们在'request.POST'中。但是他们不能在'form.cleaned_data'中,因为你排除了它们。我必须说,我不明白你为什么要这样做。 –