Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Subclass <code>AdminTimeWidget</code> to include a modified DateTimeShortcuts.js (get to that in a sec), then subclass <code>AdminSplitDateTime</code> to include your subclassed <code>MyAdminTimeWidget</code> instead of the default Django one:</p> <pre><code>from django.contrib.admin.widgets import AdminTimeWidget from django.conf import settings class MyAdminTimeWidget(AdminTimeWidget): class Media: js = (settings.ADMIN_MEDIA_PREFIX + "js/calendar.js", settings.MEDIA_URL + "js/admin/DateTimeShortcuts.js") class MyAdminSplitDateTime(AdminSplitDateTime): def __init__(self, attrs=None): widgets = [AdminDateWidget, MyAdminTimeWidget] forms.MultiWidget.__init__(self, widgets, attrs) </code></pre> <p>The secret sauce is in <code>django/contrib/admin/media/js/admin/DateTimeShortcuts.js</code>. This is what creates the list you want to modify. Copy this file and paste it into your project's <code>site_media/js/admin</code> directory. The relevant code you need to modify is on lines 85-88:</p> <pre><code>quickElement("a", quickElement("li", time_list, ""), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().strftime('" + time_format + "'));"); quickElement("a", quickElement("li", time_list, ""), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,0,0,0,0).strftime('" + time_format + "'));"); quickElement("a", quickElement("li", time_list, ""), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,6,0,0,0).strftime('" + time_format + "'));"); quickElement("a", quickElement("li", time_list, ""), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,12,0,0,0).strftime('" + time_format + "'));"); </code></pre> <p>Simply add to/delete from/modify that bit of javascript to your heart's content.</p> <p>Finally, attach your new widget to any DateTimeFields you like. Your best bet for that will probably be the <code>formfield_overrides</code> attribute on <code>ModelAdmin</code>:</p> <pre><code>class MyModelAdmin(admin.ModelAdmin): formfield_overrides = { models.DateTimeField: {'widget': MyAdminSplitDateTime}, } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload