我使用的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'中,因爲你排除了它們。我必須說,我不明白你爲什麼要這樣做。 –