2012-02-10 66 views
0

我在我的django項目中有一個名爲pub_date的日期字段。我想用jQuery datepicker而不是默認的django datepicker 在django admin。但我想這樣做而不使用Django表格。有可能這樣做嗎?我在下面給我的代碼。jQuery datepicker在Django管理員沒有使用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) 

是否有可能使用jquery的日期選擇器的DateFieldDateTimeField字段上述定義沒有使用django的模型女士?

回答

1

如果您不想創建表單小部件,則可以通過overriding your admin change_form.html template覆蓋日期選擇器。

+0

我已經在django admin中使用這種方法顯示了jquery datepicker。但我無法隱藏默認的django datepicker快捷鍵。如何隱藏它們或如何用jquery datepicker替換默認的django datepicker。 – arulmr 2012-09-01 06:53:03

0

查看我的問題Change the default widget for date fields in Django admin關於如何爲所有DateField實例執行此操作。

如果您不想觸摸表單,請提供您自己的js/calendar.js和js/admin/DateTimeShortcuts.js - 如果您只想爲特定模型執行此操作,則需要覆蓋它的change_form .html模板並在那裏替換默認的JavaScript文件。 javascript所做的就是查找日期(時間)字段並插入日期選擇器 - 只需使用不同的日期選擇器即可完成。

+0

嗨。感謝您的回覆。我嘗試了年度問題中給出的方法。但我無法讓他們工作。我是django的初學者,我不清楚如何覆蓋默認的datepicker js。所以如果可能的話,你可以請我給樣品解釋一些細節。再次感謝你的幫助。 – arulmr 2012-03-19 14:35:47

+0

另一個答案(一個子集)變得更有用了嗎?看看https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js - admin(小部件)使用DateTimeShortcuts.init()來追加一個「日曆圖標「後的每個輸入字段與類」vDateField「。實際的日曆是用https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/calendar.js繪製的 - 在你的靜態文件夾中只提供admin/js/calendar。 js和admin/js/admin/DateTimeShortcuts.js - 然後將使用它們。然後模仿其他DateTimeShortcuts函數。 – 2012-07-02 08:44:50