【发布时间】:2018-09-15 00:45:11
【问题描述】:
我有一个模型,其中包含一个由选项组成的 CharField,如下例所示
class SomeModel(models.Model):
some_field = models.CharField(choices=(('Name1', 'Name1'),
('Name2', 'Name2'),
('Name3', 'Name3')
)
)
这是我的模型表单
class SomeModelForm(forms.ModelForm):
class Meta:
model = SomeModel
这是我将实例附加到表单的基本视图:
def some_view(request, model_id):
somemodel = SomeModel.objects.get(id=model_id)
form = SomeModelForm(instance=somemodel)
context = {'form': form}
return render(request, 'page.html', context)
当表单呈现时,下拉菜单没有预先填充。这不是我的代码有问题的情况,因为所有其他表单字段(本示例中省略)都是预先填充的。我知道我可以将 CharField 设为 ForeignKey,然后 Django 会正确预填充下拉列表,但我不想这样做。有没有办法让表格显示正确的选择?任何帮助将不胜感激!
编辑:正如@solarissmoke 所要求的,这是我呈现表单的方式。没有提交按钮,因为我使用 ajax 在值更改后立即提交表单。
<form action="{% url 'some_location' %}" method="post">
{{ form.some_field }}
</form>
评论感谢@solarissmoke 促使我深入挖掘。 Django 工作得很好。我的 ajax 提交设置不正确,并且不正确的 jquery 弄乱了显示的选择。感谢您的回复,对于您浪费的任何时间,我深表歉意。菲尔
【问题讨论】:
-
请告诉我们您是如何呈现表单的。几乎可以肯定是您的代码有问题,因为如果实例为该字段设置了值,Django 会正确填充该字段。
-
@solarissmoke 表单渲染添加在上面。
-
这应该呈现值...你能告诉我们它生成的呈现 HTML 吗?