我有一个模型表单,我正在将字段手动输入到模板中。
模型形式:
class ProductEntryForm(forms.ModelForm):
class Meta:
model = Product
fields = [
'image', 'product_name', 'price', 'options',
]
在模板中手动呈现字段:
<form method="POST" enctype="multipart/form-data">
<h2>New Product</h2>
{% csrf_token %}
{{ form.non_field_errors }}
<p>
<label for="">Image</label>
{{ form.image.errors }}
{{ form.image }}
</p>
<p>
<label for="">Product name</label>
{{ form.product_name.errors }}
{{ form.product_name }}
</p>
<p>
<label for="">Description</label>
{{ form.description.errors }}
{{ form.description }}
</p>
...
由于用户没有直接填写此字段,因此表单的options
字段被隐藏在模板中。他们从不同的输入字段填充它。
<form method="POST" enctype="multipart/form-data">
...
<p style="display: none">
{{ form.options }}
</p>
<input type="text" name="visible_option_input" :value="[[make_this_value_of_{{form.options}}_when_submitted]]">
...
</form>
我希望提交时"visible_option_input"
的值是{{ form.options }}
的值
答案 0 :(得分:0)
我解决了。
执行此操作的方法是显式呈现django模板表单字段(有关手动呈现django表单的信息,请参见simpleisbetterthancomplex上的帖子)
<p style="display: none">
<input type="text"
name="{{ form.options.name }}"
id="{{ form.options.id_for_label }}"
{% if form.options.value != None %}
value="{{ form.options.value|stringformat:'s' }}"
{% endif %}
maxlength="{{ form.options.field.max_length }}"
{% if form.options.field.required %}
required
{% endif %}>
</p>
然后我使用Vuejs将visible_option_input
中的值绑定到django字段:
我替换了django表单值:
{% if form.options.value != None %}
value="{{ form.options.value|stringformat:'s' }}"
{% endif %}
具有:
v-model="my_v-model_property"
我使用了Vuejs,但是您可以使用纯js或您喜欢的任何其他工具。