【问题标题】:Pre-populate the correct choice for a CharField in a Django form在 Django 表单中为 CharField 预先填充正确的选择
【发布时间】: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 吗?

标签: python django forms


【解决方案1】:

我刚刚制定了一个 jquery 解决方案,但如果可能的话,我想要更像 django 的东西......

$("#id_some_field").val("{{ form.some_field.value }}");

【讨论】:

    猜你喜欢
    • 2012-07-20
    • 2015-12-10
    • 2023-02-10
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多