带有管理员小部件的Django ModelForm

3 投票
1 回答
3663 浏览
提问于 2025-04-17 10:41

我创建了一些模型,然后从这些模型生成了ModelForms。不过,我发现这些ModelForm生成的控件和在管理页面看到的控件不太一样。

我想知道怎么才能:

  1. 得到和管理页面一样的控件。那些控件真不错,比如外键字段旁边有个“加号”图标,可以用来添加新的引用项。

  2. 日期时间控件有个“现在”按钮,可以快速填入当前时间。

  3. 有没有其他好用的插件可以让控件更酷?到目前为止,我看到的控件都很普通,甚至像日期时间这样的字段也只是生成了一个普通的输入框,没什么特别的。

1 个回答

6

你可以看看django/contrib/admin/widgets.py这个文件。在这里你会找到管理后台用到的小工具。然后在你的表单中,做一些类似下面的事情:

from django.contrib.admin.widgets import AdminDateWidget

class MyForm(ModelForm):

    class Meta:
        widgets = {
            'date': AdminDateWidget(),
        }

确保你的模板包含了所需的媒体文件(比如css和js文件)

我还建议你看看django-floppyforms,这是一个很不错的库,如果你想要更好的小工具的话。

撰写回答