Django – AdminSplitDateTime() Widget in View

Monday, 19. October 2009

Wie man dieses feine Date und Time Select Widget aus der Adminoberfläche in sein View bekommt (wo die Auswahl der Widgets eher nicht so umwerfend ist) wird in Folge stichwortartig beschrieben:

calender

# in den head des templates

<script type="text/javascript" src="/my_admin/jsi18n/"></script>
<script type="text/javascript" src="/media/admin/js/core.js"></script>
{{ form.media }}

# in die urls.py

(r'^my_admin/jsi18n', 'django.views.i18n.javascript_catalog'),

# in forms.py

from django.contrib.admin import widgets
class NotesForm(ModelForm):
todo_date_time = forms.DateTimeField(widget=widgets.AdminSplitDateTime(), required=False)
class Meta:
model = Note

Das ganze jetzt noch in Kürze erläutert….

Template: jsi18n/  und core.js sowie die zwei js Files die “form.media” noch reinholt werden einfach mal benötigt.

Urls: Damit /my_admin/ auch etwas liefern kann muss dieser Aufruf über die urls.py abgefangen und auf den javascript_catalog umgeleitet werden.. daher der Eintrag in der urls.py

Forms: hier wird “Note” aus der models.py quasi gesubclassed und dem “todo_date_time” Feld (name ist natürlich Schall und Rauch) ein Widget aufgezwungen – der Rest wird einfach bei dem belassen was “modelform” üblicherweise aus dem definierten Model macht. Im enstprechenden View kann man diese Form namens “NotesForm” natürlich importieren und an das Template weiterleiten .. rendern lassen.

glhf

Comments are closed.