Django 如何从混合在一起的 Modelform 和静态表单域中检索 post 数据
Django how to retrieve post data from Modelform and static formfields mixed together
我正在使用 Django Modelform 与静态表单字段混合生成一个 HTML 表单,如下所示:
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 表单与静态和动态表单字段完美显示。我可以请求表单值并像这样查看它们:
form = ExampleForm(request.POST)
return HttpResponse(form)
问题:
当我使用上述技术请求 POST 数据时,我只收到来自 Modelform(动态字段)的 post 数据,而不是来自静态字段的数据!
我发现我可以通过这种方式从静态字段请求 posted 值:
label_1 = request.POST.get("label_1")
return HttpResponse(label_1)
以上代码将给我 posted 静态复选框的值。但是,现在我必须收集所有静态字段,我想一次捕获所有 posted 数据,然后进一步处理它。
现在我的问题是,当我在 Django 中请求它们时,我怎么可能没有得到所有的 post 值?如何使用其中的所有 post 数据创建 1 个变量,包括模型值和静态表单字段?
希望我的问题很清楚,谢谢大家! :)
我相信你可能想仔细看看这一行:
exclude = ['label_1','label_2','label_3']
我正在使用 Django Modelform 与静态表单字段混合生成一个 HTML 表单,如下所示:
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 表单与静态和动态表单字段完美显示。我可以请求表单值并像这样查看它们:
form = ExampleForm(request.POST)
return HttpResponse(form)
问题:
当我使用上述技术请求 POST 数据时,我只收到来自 Modelform(动态字段)的 post 数据,而不是来自静态字段的数据!
我发现我可以通过这种方式从静态字段请求 posted 值:
label_1 = request.POST.get("label_1")
return HttpResponse(label_1)
以上代码将给我 posted 静态复选框的值。但是,现在我必须收集所有静态字段,我想一次捕获所有 posted 数据,然后进一步处理它。
现在我的问题是,当我在 Django 中请求它们时,我怎么可能没有得到所有的 post 值?如何使用其中的所有 post 数据创建 1 个变量,包括模型值和静态表单字段?
希望我的问题很清楚,谢谢大家! :)
我相信你可能想仔细看看这一行:
exclude = ['label_1','label_2','label_3']