【发布时间】:2023-01-28 01:01:07
【问题描述】:
我有以下 Django 表单;它有一个名为“完成”的字段,该字段是隐藏的。我将默认设置为 False 因为只有一我希望它设置为 True 的情况。
问题是它仍然将其标记为“False”,我无法弄清楚在那种情况下如何更改它。
在我的views.py 我有这个:
context["test_form"] = TestForm(
instance=self.object, hide_status=True, is_finished=True
)
form 看起来像这样:
class TestForm(ModelForm):
finished = forms.BooleanField(
widget=forms.HiddenInput(), initial=False, required=False
)
status = forms.Select(attrs={"class": "form-control"})
def __init__(self, *args, **kwargs):
hide_status = kwargs.pop("hide_status", None)
is_finished = kwargs.pop("is_finished", None)
super().__init__(*args, **kwargs)
self.fields["status"].queryset = Status.objects.filter(active=True)
self.fields["status"].widget.attrs["class"] = "form-control"
if hide_status:
self.fields["status"].widget = HiddenInput()
if is_finished:
self.fields["finished"].initial = True
class Meta:
model = Test
fields = ["finished", "status"]
HTML 非常简单:
<form method="post" action="{% url 'my_app:test-update' %}">
{% csrf_token %}
{{ test_form.as_p }}
<button type="submit" class="btn btn-primary">Finish</button>
</form>
呈现的 HTML 如下所示:
<input type="hidden" name="finished" value="False" id="id_finished">
在这种情况下,将该设置设置为 True 的最佳方法是什么?
【问题讨论】:
标签: python html django django-forms