【问题标题】:Fill value on hidden django input field on ModelForm在 ModelForm 上的隐藏 django 输入字段上填充值
【发布时间】:2020-04-02 16:58:53
【问题描述】:

我有一个模型表单,我正在手动将字段输入到我的模板中。

模型形式:

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 }} 的值

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    我解决了。

    这样做的方法是显式渲染 django 模板表单字段(请参阅simpleisbetterthancomplex 上的这篇文章以手动渲染 django 表单):

    <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 或任何其他你喜欢的工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2013-03-25
      • 2014-05-01
      • 2017-11-13
      • 2018-11-18
      相关资源
      最近更新 更多