【问题标题】:Django Admin Custom Widget for ForeignKeyForeignKey 的 Django Admin 自定义小部件
【发布时间】:2016-05-04 07:57:39
【问题描述】:

听起来是个微不足道的问题,但似乎并不那么容易回答:

如何在 Django Admin 中将 ForeignKey 字段显示为 Checkbox 并在此用户选中 Admin 中的复选框时保存当前登录的用户?

例子:

class MyModel(models.Model):
    ...
    approved = models.ForeignKey(User)
    ...

admin.site.register(MyModel)

如何将approved 字段显示为复选框?

非常感谢您的帮助!

【问题讨论】:

    标签: django widget foreign-keys admin django-hvad


    【解决方案1】:

    您可以在 ModelAdmin 上使用 get_form 方法,并根据需要自定义表单。

    在这种情况下,您必须将字段小部件更改为复选框,并在表单验证时将值设置为 request.user(如果选中)。

    【讨论】:

    • 感谢您的回答!你确定 Django 的表单清理方法不会阻止这种方法吗?
    • 由于您必须为此字段实现 clean 方法,这完全取决于您。不是 Django。
    【解决方案2】:

    你可以在admin.py中自定义如下

    class MyModelWidget(forms.ModelForm):
        approved = forms.BooleanField(widget=forms.CheckboxInput())
    
        class Meta:
            model = MyModel
    admin.site.register(MyModel, MyModelWidget)
    

    参考https://docs.djangoproject.com/en/1.9/ref/contrib/admin/

    【讨论】:

      【解决方案3】:

      在你的 form.py 中:

      class YOURMODELForm(forms.ModelForm):
          approved = forms.ModelChoiceField(queryset=User.objects.order_by('name'))
      

      【讨论】:

        猜你喜欢
        • 2012-03-28
        • 2014-04-18
        • 2011-03-29
        • 1970-01-01
        • 2019-05-07
        • 2012-09-21
        • 1970-01-01
        • 2017-03-17
        • 2014-06-24
        相关资源
        最近更新 更多