Django模型形式的初始值
我很难理解Django的文档。我也遇到过其他一些同样问题的线索,但我似乎无法找到适合我的建议答案。我想这是因为我在发布文本,而它不被认为是“干净”的数据 我想自动填充两个表单字段,然后当用户点击提交按钮时,它会保存。但由于某些原因,只有布尔值起作用,而不是文本值。有什么想法吗 您还将看到这些字段对我的模板是隐藏的。当我显示这些字段时,初始值会像我预期的那样正确设置,但当我点击submit时,只有布尔值会正确保存到数据库中 编辑 当我不使用模板中的Django模型形式的初始值,django,Django,我很难理解Django的文档。我也遇到过其他一些同样问题的线索,但我似乎无法找到适合我的建议答案。我想这是因为我在发布文本,而它不被认为是“干净”的数据 我想自动填充两个表单字段,然后当用户点击提交按钮时,它会保存。但由于某些原因,只有布尔值起作用,而不是文本值。有什么想法吗 您还将看到这些字段对我的模板是隐藏的。当我显示这些字段时,初始值会像我预期的那样正确设置,但当我点击submit时,只有布尔值会正确保存到数据库中 编辑 当我不使用模板中的{{form}}隐藏表单字段时,它工作得很好。 当
{{form}}
隐藏表单字段时,它工作得很好。
当我使用
{{form.field.as_hidden}
接受布尔字段,但不接受文本字段。
我正在尝试用文本值自动填充此字段,隐藏它,并在按下提交按钮时提交此值
视图.py
class BuildStopView(LoginRequiredMixin,UpdateView):
model = Build
form_class = StopBuild
template_name = 'build_stop.html'
login_url = 'login'
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']
forms.py
class BuildStopView(LoginRequiredMixin,UpdateView):
model = Build
form_class = StopBuild
template_name = 'build_stop.html'
login_url = 'login'
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']
(模板)停止构建.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 %}
{%extends'base.html%}
{%block body%}
a组{
文本对齐:居中;
}
是否确实要手动停止此生成?
{%csrf_令牌%}
{{form.field.as_hidden}
手动停止生成
{%endblock%}
表单。字段。as_hidden
不会将字段输出为hidden,事实上它根本不做任何事情,因为表单中没有名为字段
的字段。您需要参考实际字段:
{{ form.buildEndType.as_hidden }}
{{ form.buildActive.as_hidden }}
但是,如果您希望这些字段始终显示为隐藏的,您可能应该在表单定义中使用声明它们。
表单。字段。因为隐藏的
不会将字段输出为隐藏的,事实上它根本不做任何事情,因为您的表单中没有名为字段
的字段。您需要参考实际字段:
{{ form.buildEndType.as_hidden }}
{{ form.buildActive.as_hidden }}
但是,如果您希望始终将它们显示为隐藏的,您可能应该在表单定义中这样做,用声明它们。您希望
{{form.field.as_hidden}
做什么?您是否尝试过在该位置使用模板标记{{form}
来简单地呈现表单?{{form.field.as_hidden}
隐藏表单字段。我只希望用户看到按钮,而不是正在提交的内容。这基本上是一个确认页面。当我放置{{form}}
时,它显示字段。Ok。问题是没有属性form.field
,正如Daniel Roseman在下面的回答中所解释的那样。有一件事我不太明白,如果你想隐藏每个字段,为什么在这里使用表单?或者只是在示例代码中?如果它只是一个按钮,您不需要表单。你可以有一个空负载的帖子。您只是将数据传递给客户机,希望客户机在不修改的情况下直接传递回数据。我认为一定有更好的方法,但不确定最好的方法是什么。我给用户显示了一个按钮,上面写着“停止构建”,要用我的代码停止一个“构建”,它需要设置为False,所以我想我可以隐藏这个实际字段,这样看起来更干净。。一篇帖子听起来更正确,也不太老套。你希望{{form.field.as_hidden}
做什么?您是否尝试过在该位置使用模板标记{{form}
来简单地呈现表单?{{form.field.as_hidden}
隐藏表单字段。我只希望用户看到按钮,而不是正在提交的内容。这基本上是一个确认页面。当我放置{{form}}
时,它显示字段。Ok。问题是没有属性form.field
,正如Daniel Roseman在下面的回答中所解释的那样。有一件事我不太明白,如果你想隐藏每个字段,为什么在这里使用表单?或者只是在示例代码中?如果它只是一个按钮,您不需要表单。你可以有一个空负载的帖子。您只是将数据传递给客户机,希望客户机在不修改的情况下直接传递回数据。我认为一定有更好的方法,但不确定最好的方法是什么。我给用户显示了一个按钮,上面写着“停止构建”,要用我的代码停止一个“构建”,它需要设置为False,所以我想我可以隐藏这个实际字段,这样看起来更干净。。一篇帖子听起来更正确,也不那么刻薄。