我很难理解有关该文档的Django文档。我也遇到了其他一些具有相同问题的话题,但是我似乎无法获得建议的答案来为我工作。我认为这是因为我正在发布文本,并且它不被视为“干净”数据吗?
我想自动填充两个表单字段,然后在用户单击“提交”按钮时保存。但是由于某种原因,只有布尔值起作用,而不是文本值。有什么想法吗?
您还将看到我的模板中隐藏了这些字段。当我显示这些字段时,初始值将按预期正确设置,但是当我点击Submit时,只有布尔值正确地保存到数据库中。
编辑
当我不使用模板中的{{ form }}
隐藏表单字段时,它会很好地工作。
当我使用{{ form.field.as_hidden }}
隐藏字段时,它不起作用
布尔字段被接受,但文本字段不被接受。
我正在尝试用文本值自动填充此字段,将其隐藏,然后在按下提交按钮时提交该值...
views.py
class BuildStopView(LoginRequiredMixin,UpdateView):
model = Build
form_class = StopBuild
template_name = 'build_stop.html'
login_url = 'login'
forms.py
class StopBuild(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(StopBuild, self).__init__(*args, **kwargs)
self.initial['buildEndType'] = 'manuallyStopped'
self.initial['buildActive'] = False
class Meta:
model = Build
fields = ['buildEndType','buildActive']
(模板)stop_build.html
{% extends 'base.html' %}
{% block body %}
<style>
div.a {
text-align: center;
}
</style>
<div class = "a">
<h3>Are you sure you want to stop this build manually?</h3>
</div>
<form action="" method="post">{% csrf_token %}
{{ form.field.as_hidden }}
<button class="btn btn-danger ml-2" type="submit">Stop Build Manually</button>
</form>
{% endblock %}
答案 0 :(得分:2)
form.field.as_hidden
不会将字段输出为隐藏字段,实际上它根本不做任何事情,因为您的表单中没有名为field
的字段。您需要参考实际字段:
{{ form.buildEndType.as_hidden }}
{{ form.buildActive.as_hidden }}
但是,如果希望这些内容始终显示为隐藏,则可能应该在表单定义中使用HiddenInput
widgets进行声明。