gpt4 book ai didi

python - django modelformset_factory 不包含实际表单

转载 作者:行者123 更新时间:2023-12-01 03:36:21 25 4
gpt4 key购买 nike

我一直在尝试遵循教程和其他 SO 问题,并有一个 modelformset_factory 显示 html 中看起来像表单的列表,但事实证明它们不是实际的表单。

显示的html:

<div ='container'>

<div class='row'><tr><th><label for="id_form-0-config_key">Config key:</label></th><td><input id="id_form-0-config_key" maxlength="63" name="form-0-config_key" type="text" value="ClientMustVerify" /></td></tr>
<tr><th><label for="id_form-0-config_value">Config value:</label></th><td><input id="id_form-0-config_value" maxlength="63" name="form-0-config_value" type="text" value="TRUE" /><input id="id_form-0-id" name="form-0-id" type="hidden" value="3" /></td></tr> <input type="submit" value="Update" /></div>

<div class='row'><tr><th><label for="id_form-1-config_key">Config key:</label></th><td><input id="id_form-1-config_key" maxlength="63" name="form-1-config_key" type="text" value="Auditing" /></td></tr>
<tr><th><label for="id_form-1-config_value">Config value:</label></th><td><input id="id_form-1-config_value" maxlength="63" name="form-1-config_value" type="text" value="FALSE" /><input id="id_form-1-id" name="form-1-id" type="hidden" value="4" /></td></tr> <input type="submit" value="Update" /></div>

<div>

注意,任何地方都没有 form 标记。逆向工作,以下是模板的摘录:

<div ='container'>
{% for form in formset %}
<div class='row'>{{form}} <input type="submit" value="Update" /></div>
{% endfor %}
<div>

是的,我手动添加了 submit 按钮,希望它们能够正常工作,但是当然,如​​果没有 form 标记,那么 submit 按钮不会执行任何操作。 View .py:

from limbo.models import serverConfig
from django.forms import modelformset_factory
from django.forms import formset_factory

def editServer(request):
result = serverConfig.objects.values()
myConfigs = [entry for entry in result]

finalFormSet = modelformset_factory(serverConfig, exclude=('id',), extra=0)
#other lines
return render(request, 'limboHtml/ServerConfiguration.html', {'formset': finalFormSet, 'SubmitMessage': '', 'CurrentConfigs': myConfigs})

表单.py:

class serverForm(ModelForm):
class Meta:
model = serverConfig
fields = ['config_key', 'config_value']
def __init__(self, *args, **kwargs):
super(serverForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk:
self.fields['config_key'].widget.attrs['readonly'] = True
self.fields['config_key'].widget.attrs['disabled'] = True

和models.py:

class serverConfig(models.Model):

config_key = models.CharField(max_length=63)
config_value = models.CharField(max_length=63)

我曾尝试使用finalFormSet = formset_factory(serverForm, extra=0),但后来我在html中没有内容......

最佳答案

formset documention 中所述您必须手动添加表单标签。这与显示单个表单时所做的没有太大不同。

看来您正在迭代表单集并一一显示它们。这意味着您还必须添加管理表单

<form method="post" action="">
{{ formset.management_form }}
<div ='container'>
{% for form in formset %}
<div class='row'>{{form}} <input type="submit" value="Update" /></div>
{% endfor %}
<div>
</form>

或者您会收到有关管理表单丢失或配置错误的错误。

关于python - django modelformset_factory 不包含实际表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com