如何将 ManyToManyField 小部件更改为 CheckboxSelectMultiple,而不覆盖 ModelForm 中的字段定义

发布于 2024-09-08 00:35:58 字数 444 浏览 5 评论 0原文

我有 django ModelForm 用于带有 ManyToManyField 的模型。我想将此字段的小部件更改为CheckboxSelectMultiple。我可以在不覆盖表单定义中的字段的情况下执行此操作吗?

我经常使用与此类似的代码:

class MyModel(ModelForm):
    m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
                                               widget = forms.CheckboxSelectMultiple())

还有其他方法可以做到这一点吗?

编辑:我需要这个用于 Django 1.1.1 项目

I have django ModelForm for model with ManyToManyField. I want to change widget for this field toCheckboxSelectMultiple. Can I do this without overriding a field in a form definition?

I constantly use code similar to this:

class MyModel(ModelForm):
    m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
                                               widget = forms.CheckboxSelectMultiple())

Is there other way to do this?

EDIT: I need this for Django 1.1.1 project

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

贱人配狗天长地久 2024-09-15 00:35:58

如果您使用的是 Django 1.2+,则可以在内部 Meta 类中使用 widgets 元组。

class MyModelForm(forms.ModelForm):
    class Meta:
        widgets = {'m2m_field': forms.CheckboxSelectMultiple}

请参阅文档< /a>.

If you're using Django 1.2+, you can use the widgets tuple in the inner Meta class.

class MyModelForm(forms.ModelForm):
    class Meta:
        widgets = {'m2m_field': forms.CheckboxSelectMultiple}

See the documentation.

恰似旧人归 2024-09-15 00:35:58

另一种方法是在 ModelForm 的 init 中执行此操作:

class MyModel(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()

    [...]

Another way to do this is doing it in the init of the ModelForm:

class MyModel(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()

    [...]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文