从上下文Django

我有一个带有基本模板的常规表格:

<form method="post" action="">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="submit">
</form>

该表单由在forms.py

中定义的三个整数字段组成
class InitForm(forms.Form):
    row_1 = forms.IntegerField(initial=1,min_value=1)
    row_2 = forms.IntegerField(initial=1,min_value=1)
    row_3 = forms.IntegerField(initial=1,min_value=1)

使用用户输入在运行时设置最大值。我已经使用

将其添加到上下文中
get_context_data()...

在表单视图类中,但是如何为模板中的三个整数字段设置最大输入值?我已经可以在模板中输出最大值了

{{ maximum_value }}

我只是很难将其添加到表单字段中。作为参考,我需要所有字段上的最大值

www2281100 回答:从上下文Django

  

在模板中尝试以下操作。

<input type="number" name="test" min="1" max="{{ maximum_value }}">
  

引用:https://www.w3schools.com/tags/att_input_max.asp

,

我已成功通过使用以下命令在django 2.2.7中成功实现了这一点:

在基于类的FormView中,设置最大值,然后在上下文中更新表单:

    def get_form_kwargs(self):
        kwargs = super(InitView,self).get_form_kwargs()
        if self.csv_maximum_row:
            kwargs[self.csv_row_max_kwarg] = self.csv_maximum_row
        return kwargs

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        context['form'].update_max()
        return context

由于表单中的所有字段都需要最大值,所以form.py中的update max函数为:

    def update_max(self):
        for field in self.fields:
            self.fields[field].widget.attrs.update({'max': self.csv_maximum_row})

在模板中呈现表单时的最大值是在FormView类中设置的值。这意味着您仍然可以使用基本模板:

<form method="post" action="">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="submit">
</form>

而不必分别深入研究各个字段的HTML。

本文链接:https://www.f2er.com/3011693.html

大家都在问