python - 如何使 Django ModelForm 菜单项默认选中?

标签 python django django-forms

我正在开发 Django 应用程序。我的模型之一“用户”包含一个“性别”字段,定义如下:

GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True)

我正在使用 ModelForm 生成“新用户”HTML 表单。我的 Google-fu 似乎让我失望了——我怎样才能让这个 HTML 表单在下拉框中默认选择“男性”项目? (即,此项目的 selected="selected"。)

最佳答案

如果您需要一个选择了默认值的空白表单,则使用您的字段名称作为键将“初始”字典传递给模型表单的构造函数:

form = MyModelForm (initial={'gender':'M'})

-或-

您可以使用 Forms API 的声明性特性覆盖 ModelForm 的某些属性。但是,这对于这个用例来说可能有点麻烦,我提到它只是为了向您展示您可以做到。您将来可能会发现它的其他用途。

class MyModelForm (forms.ModelForm):
    gender = forms.ChoiceField (choices=..., initial='M', ...)
    class Meta:
        model=MyModel

-或-

如果您想要一个绑定(bind)到模型特定实例的 ModelForm,您可以传递模型的“实例”,这会导致 Django 从该模型中提取选定的值。

form = MyModelForm (instance=someinst)

关于python - 如何使 Django ModelForm 菜单项默认选中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624265/

相关文章:

python - 从网站中提取表格

javascript - 如何将 AJAX 中的 JSON 文件与 Django 链接?

django - 如何强制对我的 Django 应用程序的某些 URL 使用 SSL?

django - 如何在模板中显示 Django '__all__' 表单错误?

django - form-horizo​​ntal 不适用于 django-crispy-forms 和 django-registration-redux

python - 如何为python的虚拟环境设置特定的python版本?

python - 返回嵌套在多个数组中的数组的最简单方法

python - 如何在 Python 中使用 IDL 可视化例程

django - 将所有时区作为 Django 模型的选择的最佳方法是什么?

python - 如何在一个 View 中处理两个表单?