【问题标题】:Django ModelForm with Admin Widgets带有管理小部件的 Django ModelForm
【发布时间】:2026-01-14 11:35:02
【问题描述】:

我创建了模型,并从模型中创建了ModelForms。但是,我注意到ModelForm 生成的小部件与我在管理页面中时的小部件不同。

我该怎么做:

  1. 获取与管理页面中相同的小部件。那些太棒了。外键字段带有“加号”图标,可让您添加被引用的新项目。

  2. 日期时间小部件具有“现在”按钮,可让您立即使用当前时间填充字段。

  3. 还有其他很酷的小部件插件吗?到目前为止,我得到的只是 meh,只是普通的 html 小部件,即使对于像 Datetime 这样的字段也没有意义(它会生成普通的普通输入控件)。

【问题讨论】:

  • *.com/questions/38601/… 这个答案解释了你需要什么。如果您弄清楚您可以编写自己的小部件,那真的很容易

标签: python django django-admin web


【解决方案1】:

你应该看看 django/contrib/admin/widgets.py 你会在这里找到管理站点小部件。然后在你的表格中,制作如下内容:

from django.contrib.admin.widgets import AdminDateWidget

class MyForm(ModelForm):

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

确保您的模板包含所需的媒体文件(css、js)

如果您想要更好的小部件,我还建议您查看django-floppyforms,这是一个非常好的库

【讨论】:

  • 只是一个简单的问题,软盘表格是否具有像管理员这样的功能(现在用于日期时间字段,自动添加外键按钮等)
  • 有一个日期小部件。见github.com/brutasse/django-floppyforms/blob/master/docs/…。我想我从来没有用过这个,但它值得一看。