【问题标题】:jQuery datepicker in Django admin without using django formsDjango admin中的jQuery datepicker而不使用django表单
【发布时间】:2012-03-03 02:54:28
【问题描述】:

我的 django 项目中有一个名为 pub_date 的日期字段。我想使用 jQuery datepicker 而不是默认的 django datepicker in django admin。但我想不使用 django 表单。有可能这样做吗?我在下面给出我的代码。

models.py

   import datetime

   from django.db import models

   class Poll(models.Model):
       question = models.CharField(max_length=200)
       date     = models.DateField('Registration Date')
       pub_date = models.DateTimeField('date published')

       def __unicode__(self):
           return self.question

       def was_published_today(self):
           return self.pub_date.date() == datetime.date.today()
       was_published_today.short_description = 'Published today?'

   class Choice(models.Model):
       poll   = models.ForeignKey(Poll)
       choice = models.CharField(max_length=200)
       votes  = models.IntegerField()

       def __unicode__(self):
           return self.choice

admin.py

    from django.contrib import admin

    from poject.app.models import Poll, Choice

    class ChoiceInline(admin.TabularInline):
        model = Choice
        extra = 3

    class PollAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
        inlines        = [ChoiceInline]
        list_display   = ('question', 'pub_date', 'was_published_today')
        list_filter    = ['pub_date']
        search_fields  = ['question']
        date_hierarchy = 'pub_date'

    admin.site.register(Poll, PollAdmin)
    admin.site.register(Choice)

是否可以在不使用django表单的情况下,在上述模型中定义的DateFieldDateTimeField中使用jquery datepicker

【问题讨论】:

    标签: django-admin


    【解决方案1】:

    如果您不想创建表单小部件,您可以通过 overriding your admin change_form.html template 覆盖日期选择器。

    【讨论】:

    • 我已经使用这种方法在 django admin 中显示了 jquery datepicker。但我无法隐藏默认的 django datepicker 快捷方式。如何隐藏它们或如何用 jquery datepicker 替换默认的 django datepicker。
    【解决方案2】:

    查看我的问题Change the default widget for date fields in Django admin,了解如何对所有 DateField 实例执行此操作。

    如果您不想触摸表单,请提供您自己的 js/calendar.js 和 js/admin/DateTimeShortcuts.js - 如果您只想为特定模型执行此操作,则需要覆盖其 change_form。 html 模板并替换那里的默认 javascript 文件。 javascript 所做的是查找日期(时间)字段并插入日期选择器 - 你的也会这样做,只是使用不同的日期选择器。

    【讨论】:

    • 嗨。感谢您的回复。我尝试了问题中给出的方法。但我无法让他们工作。我是 django 的初学者,我不太清楚覆盖默认的 datepicker js。所以如果可能的话,你能用样品向我解释一下更详细的信息吗?再次感谢您的帮助。
    • 另一个答案(一个子集)变得更有用了吗?查看github.com/django/django/blob/master/django/contrib/admin/… - 管理员(小部件)使用 DateTimeShortcuts.init() 在每个带有“vDateField”类的输入字段之后附加一个“日历图标”。实际的日历是用github.com/django/django/blob/master/django/contrib/admin/… 绘制的——在你的静态文件夹中只提供 admin/js/calendar.js 和 admin/js/admin/DateTimeShortcuts.js——然后它们将被使用。然后模仿其他 DateTimeShortcuts 函数。
    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2018-07-12
    • 2014-08-09
    • 2021-07-06
    • 2011-05-16
    • 2015-02-07
    • 2013-02-02
    相关资源
    最近更新 更多