2009-03-19 6 views
12

Я пытаюсь использовать администратор datepicker в моих собственных формах django.django: using admin datepicker

Примерно после обсуждения здесь: http://www.mail-archive.com/[email protected]/msg72138.html

Я

а) В моей forms.py включил линию

from django.contrib.admin import widgets 

б) и использовать виджет как это:

date = forms.DateTimeField(widget=widgets.AdminDateWidget()) 

c) И в моем фактическом шаблоне я добавил:

{{form.media}} 

Чтобы включить JS/стили и т.д.

Однако, когда я пытаюсь посмотреть мою форму я не получаю хороший виджет; просто обычное текстовое поле. А Javascript ошибка консоли Firefox показывает мне:

Gettext не определен в calendar.js (строка 26)

и

addEvent не определен в DateTimeShortcuts.js (строка 254)

Какие-либо предложения? Является ли это ошибкой в ​​собственной javascript-библиотеке Django?

Update: В принципе, должны включать в себя ядро ​​и (или поддельные) на i18lization

Update 2: Карл указывает это в значительной степени дублирует Using Django time/date widgets in custom form (хотя, начиная с другой позиции)

+0

Этот вопрос является дубликатом. См. Ответ здесь: http://stackoverflow.com/questions/38601/using-django-time-date-widgets-in-custom-form/38916#38916 –

+0

спасибо ... смешно, что не появилось в любой из «связанных вопросов» Либо в боковой панели здесь, либо когда я писал вопрос – interstar

+0

Ответ на вопрос Карла Мейера дает понять, что это ответ, который требует много работы, больше, чем просто реализация собственных datepicker с помощью jQuery или какой-либо другой известной библиотеки. – rossdavidh

ответ

5

Нет, это не ошибка.

Он пытается вызвать функцию интертекстации gettext() в js. Вы можете сделать интернационализацию js так же, как вы делаете это в коде или шаблонах python, это только менее известная функция.

Если вы не используете интернационализацию js в своем проекте, вы можете просто положить.

<script>function gettext(txt){ return txt }</script> 

в вашем верхнем шаблоне, поэтому переводчик js не задыхается.

Это хакерский способ решить его, я знаю.

Edit:

Или вы можете включать точные jsi18n Джанго ссылку расслоения плотных админ, чтобы заставить его работать даже с другими языками. Я не знаю, кто он.

Это было отправлено на сегодня Джанго-пользователей:

http://groups.google.com/group/django-users/browse_thread/thread/2f529966472c479d#

Может быть, это вы, во всяком случае, на всякий случай.

+0

спасибо ... да, это взломанно, но это заставило меня пройти мимо этой проблемы как временное исправление. – interstar

+0

Спасибо за ссылку, она была хорошо написана и сделала процесс понятным, и почувствовал себя немного менее взломанным. – monkut

2

Я думаю, что я решил первую половину явно добавляя эти строки в шаблоне:

<script type="text/javascript" src="../../../jsi18n/"></script> 
<script type="text/javascript" src="/admin_media/js/core.js"></script> 
<script type="text/javascript" src="/admin_media/js/admin/RelatedObjectLookups.js"></script> 

Но она по-прежнему сообщает, не зная GetText

+1

Нет смысла добавлять jsi18n, если у вас его нет в ваших сопоставлениях URL. вот где будет функция gettext, если вы добавите правильную вещь в urls.py: urlpatterns = patterns ('', (r '^ jsi18n/(? P \ S +?)/$', 'django.views. i18n.javascript_catalog '), ) – Vasil

+0

хорошая точка .. хотя я нашел эту строку в форме администратора тоже. Поэтому я предполагаю, что он работает на этом сервере. В таком случае ... зачем им, если не мне. Может быть, потому что это относительно в админ-дереве. – interstar

+0

:) да, но это относительный uri, поэтому, если вы можете понять, что он разрешает в шаблонах администратора, вы можете указать его как абсолютный URL-адрес и заставить его работать. Я думаю, что так будет происходить надлежащая интернационализация датпикера. – Vasil

1

Вы можете найти следующие работы для вас:

<link href="/media/css/base.css" rel="stylesheet" type="text/css" media="screen" /> 
<script type="text/javascript" src="/admin/jsi18n/"></script> 
<script type="text/javascript" src="/media/js/core.js"></script> 
{{ form.media }}