समय के साथ इस जवाब की बढ़ती जटिलता, और कई हैक की आवश्यकता है, शायद आपको ऐसा करने के खिलाफ सावधानी बरतने की जरूरत है। यह व्यवस्थापक के अनिर्दिष्ट आंतरिक कार्यान्वयन विवरणों पर निर्भर है, Django के भविष्य के संस्करणों में फिर से टूटने की संभावना है, और किसी अन्य जेएस कैलेंडर विजेट को खोजने और इसका उपयोग करने की तुलना में लागू करना आसान नहीं है।
अगर आपने यह काम करने की ठान ली है, तो आपको यहाँ क्या करना है:
अपने मॉडल के लिए अपने स्वयं के मॉडलफ़ॉर्म उपवर्ग को परिभाषित करें (अपने ऐप में इसे फॉर्मडोमेक्स में डालने के लिए सबसे अच्छा), और यह बताएं कि AdminDateWidget / AdminTimeWidget / AdminSplitDateTime (अपने मॉडल से उचित फ़ील्ड नामों के साथ 'myateate' को बदलें):
from django import forms
from my_app.models import Product
from django.contrib.admin import widgets
class ProductForm(forms.ModelForm):
class Meta:
model = Product
def __init__(self, *args, **kwargs):
super(ProductForm, self).__init__(*args, **kwargs)
self.fields['mydate'].widget = widgets.AdminDateWidget()
self.fields['mytime'].widget = widgets.AdminTimeWidget()
self.fields['mydatetime'].widget = widgets.AdminSplitDateTime()
अपने URLconf को 'form_class' पास करने के लिए बदलें: 'मॉडल' के बजाय ProductForm: जेनेरिक create_object देखने के लिए उत्पाद (जिसका अर्थ "my_app.forms से आयात ProductForm" के बजाय "myapp.models आयात उत्पाद से" होगा, निश्चित रूप से)।
अपने टेम्प्लेट के प्रमुख में, जावास्क्रिप्ट फ़ाइल के लिंक को आउटपुट करने के लिए {{form.media}} शामिल करें।
और हैक किए गए भाग: व्यवस्थापक दिनांक / समय विजेट यह मानते हैं कि i18n JS सामान लोड किया गया है, और इसके लिए core.js की भी आवश्यकता है, लेकिन स्वचालित रूप से एक भी प्रदान न करें। तो आपके {{form.media}} ऊपर के टेम्पलेट में आपको आवश्यकता होगी:
<script type="text/javascript" src="/my_admin/jsi18n/"></script>
<script type="text/javascript" src="/media/admin/js/core.js"></script>
आप निम्नलिखित व्यवस्थापक CSS ( इस का उल्लेख करने के लिए धन्यवाद एलेक्स ) का उपयोग करना चाहते हैं :
<link rel="stylesheet" type="text/css" href="/media/admin/css/forms.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/base.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/global.css"/>
<link rel="stylesheet" type="text/css" href="/media/admin/css/widgets.css"/>
इसका मतलब है कि Django का एडमिन मीडिया (ADMIN_MEDIA_PREFIX) / मीडिया / एडमिन / - पर है, जिसे आप अपने सेटअप के लिए बदल सकते हैं। आदर्श रूप से आप इस मान को अपने खाके में लाने के बजाय इसे मानने के लिए एक संदर्भ प्रोसेसर का उपयोग करेंगे, लेकिन यह इस प्रश्न के दायरे से बाहर है।
इसके लिए यह भी आवश्यक है कि URL / my_admin / jsi18n / मैन्युअल रूप से django.views.i18n.javascript_catalog व्यू (या null_javascript_catalog यदि आप I18N का उपयोग कर रहे हैं) तक वायर्ड हो सकते हैं। आपको व्यवस्थापक एप्लिकेशन के माध्यम से जाने के बजाय यह स्वयं करना होगा ताकि आप इस बात पर ध्यान दिए बिना पहुँच योग्य हों कि क्या आप व्यवस्थापक में लॉग इन हैं (धन्यवाद जेरेमी इस बात को इंगित करने के लिए)। आपके URLconf के लिए नमूना कोड:
(r'^my_admin/jsi18n', 'django.views.i18n.javascript_catalog'),
अंत में, यदि आप Django 1.2 या उसके बाद का उपयोग कर रहे हैं, तो आपको विजेट्स को उनके मीडिया को खोजने में मदद करने के लिए अपने टेम्पलेट में कुछ अतिरिक्त कोड की आवश्यकता होगी:
{% load adminmedia %} /* At the top of the template. */
/* In the head section of the template. */
<script type="text/javascript">
window.__admin_media_prefix__ = "{% filter escapejs %}{% admin_media_prefix %}{% endfilter %}";
</script>
इस जोड़ के लिए धन्यवाद lupefiasco ।