Django 管理界面 ForeignKey 的自定义小部件

4

看似一个琐碎的问题,但回答起来似乎并不容易:

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

例如:

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

admin.site.register(MyModel)

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

非常感谢您的帮助!

3个回答

0
你可以在你的ModelAdmin中使用get_form方法,并自定义表单以满足你的需求。
在这种情况下,你需要将字段小部件更改为复选框,并在表单验证时将值设置为request.user(如果选中)。

谢谢你的回答!你确定Django的表单清理方法不会阻止这种方法吗? - Matthias Scholz
由于您需要为该字段实现清除方法,因此这完全取决于您,而不是Django。 - Alvin Lindstam

0
您可以在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/


0
在你的form.py文件中:
class YOURMODELForm(forms.ModelForm):
    approved = forms.ModelChoiceField(queryset=User.objects.order_by('name'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接