使用 django admin 的日期选择器

问题描述 投票:0回答:3

我是 Django 的新手,我正在尝试查找 Django Admin 日期选择器小部件。我有搜索但没有结果。谁能帮我在我正在进行的项目中使用它?

我的模型中有一个日期时间字段,如下所示:

fin = models.DateTimeField()

当从管理员创建模型时会显示小部件,但是当我从项目中创建模型时它不会。

django datetime django-admin
3个回答
22
投票

按如下方式在您的表单中指定小部件:

from django.contrib.admin.widgets import AdminDateWidget

class YourForm(forms.ModelForm):
        from_date = forms.DateField(widget=AdminDateWidget())

不要忘记在模板中包含脚本和 css:

{{ form.media }}

9
投票

如果出于某种原因您希望将日期选择器与 PostgreSQL

DateRangeField
一起使用,您可以这样做:

from django.contrib.admin.widgets import AdminDateWidget
from django.contrib.postgres.forms.ranges import DateRangeField, 
RangeWidget

class YourForm(forms.ModelForm):
    date_range = DateRangeField(widget=RangeWidget(AdminDateWidget()))

0
投票

这在 Django-admin 中对我有用

class CustomAdminDateWidget(forms.DateInput):
    class Media:
        js = ("/admin/jsi18n/", 
              "/static/admin/js/vendor/jquery/jquery.js", 
              "/static/admin/js/calendar.js", 
              "/static/admin/js/jquery.init.js", 
              "/static/admin/js/admin/DateTimeShortcuts.js", 
              "/static/admin/js/core.js")

    def __init__(self, attrs=None, format=None):
        attrs = {'class': 'vDateField', 'size': '10', **(attrs or {})}
        super().__init__(attrs=attrs, format=format)

class DateRangeForm(forms.Form):
    start_date = forms.DateField(label='From Date', widget=CustomAdminDateWidget)
    end_date = forms.DateField(label='To Date', widget=CustomAdminDateWidget)

在模板头部部分

{{ form.media }}
© www.soinside.com 2019 - 2024. All rights reserved.