2012-02-10 13 views
0

私のdjangoプロジェクトにpub_dateという名前の日付フィールドがあります。私は、デフォルトのdjango datepickerの代わりにjQueryのdatepickerを使用したいdjangoの管理。しかし、私はそれをdjangoフォームを使用せずにしたいです。それは可能ですか?私は下の私のコードを与えています。djangoのフォームを使用せずにDjangoのadminのjQuery datepicker

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) 

は、上記で定義されたのDateFieldDateTimeField型jqueryのDatePickerのを使用することが可能ですdjangoを使わないモデルミズ?

答えて

1

フォームウィジェットを作成しない場合は、日付ピッカーをoverriding your admin change_form.html templateで上書きできます。

+0

このメソッドを使用してdjango adminにjquery datepickerを表示しました。しかし、私はデフォルトのdjango datepickerショートカットを隠すことができませんでした。それらを隠す方法、またはデフォルトのdjango datepickerをjquery datepickerに置き換える方法 – arulmr

0

すべてのDateFieldインスタンスでこれを行う方法については、Change the default widget for date fields in Django adminを参照してください。

フォームに触れたくない場合は、独自のjs/calendar.jsとjs/admin/DateTimeShortcuts.jsを入力します。特定のモデルに対してのみこれを実行する場合は、そのchange_formをオーバーライドする必要があります。 .htmlテンプレートに置き換え、そこにあるデフォルトのjavascriptファイルを置き換えます。 javascriptが行うことは、日付(時間)フィールドを探して、datepickerを挿入することです - あなたは同じことを、異なる日付ピッカーだけで行います。

+0

こんにちは。お返事をありがとうございます。私はyrの質問で与えられた方法を試みた。しかし、私はそれらを働かせることができませんでした。私はdjangoの初心者です。デフォルトのdatepicker jをオーバーライドすることについてはあまり明確ではありません。可能であれば、サンプルを使ってもう少し詳しく説明してください。あなたの助けをもう一度ありがとう。 – arulmr

+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関数を模倣します。 –

関連する問題