Django 表单:如何为 DateTimeInput 小部件显示媒体(javascript)?

1 投票
1 回答
2038 浏览
提问于 2025-04-15 14:31

你好(请原谅我的英语不好 ;)),

想象一下下面这些类:

models.py

from django import models

class MyModel(models.Model):
    content_type = models.ForeignKey(ContentType, verbose_name=_('content type'))
    object_id = models.PositiveIntegerField(_('object id'))
    content_object = generic.GenericForeignKey('content_type', 'object_id')
    published_at = models.DateTimeField()

forms.py

from django import forms

class MyModelForm(forms.ModelForm):
    published_at = forms.DateTimeField(required=False, widget=DateTimeInput)

admin.py

from django.contrib import admin
form django.contrib.contenttypes import generic

class MyModelInline(generic.GenericStackedInline):
    model = MyModel
    form = MyModelForm

class MyModelAdmin(admin.ModelAdmin):
    inlines = [MyModelInline]

问题:在管理后台(添加一个新的 MyModel 对象)中,DateTimeInput 组件的 <script> 标签没有显示出来。也就是说,这两行:

<script type="text/javascript" src="/admin/media/js/calendar.js"></script>
<script type="text/javascript" src="/admin/media/js/admin/DateTimeShortcuts.js"></script>

请问,你有什么想法可以解决这个问题吗?

非常感谢,祝你有美好的一天 :)

1 个回答

5

标准的日期时间小工具里面没有任何JavaScript代码。而在管理后台使用的是一个不同的小工具,叫做 django.contrib.admin.widgets.AdminSplitDateTime,这个小工具里面是包含了JavaScript的。

撰写回答