Widget de calendrier Django dans un formulaire personnalisé
Je suis en train d'ajouter une date du calendrier d'entrée à l'un de mes formes. Il y a un magnifique widget de calendrier que Django utilise sur ses pages admin, mais je ne peux pas comprendre comment l'ajouter à un formulaire personnalisé.
J'ai trouvé un couple d'autres questions sur le même sujet ici, mais ils semblaient tous être mis à jour, compliqué, et pas de travail.
Est-il un moyen d'inclure de Django reinhardt, construit dans le calendrier widget dans un de mes formulaires?
source d'informationauteur MrGlass
Vous devez vous connecter pour publier un commentaire.
À la place de l'Admin widget, pensez à utiliser la normale "SelectDateWidget" intégré dans Django: https://docs.djangoproject.com/en/1.8/ref/forms/widgets/#selectdatewidget
J'ai tout compris, merci à Dave S. et un certain nombre d'anciens messages sur ce sujet. Ma méthode:
Créer un formulaire personnalisé.
En haut, l'importation de l'admin des widgets à l'aide
from django.contrib.admin.widgets import AdminDateWidget
. Ajoutez ensuite les différents champs de votre formulaire, à l'aide demy_field = DateField(widget = AdminDateWidget)
chaque fois que vous voulez utiliser la date widget.Créer votre modèle de formulaire
Placer celui-ci vers le haut pour inclure les fichiers css/js:
Remarque: Vous n'avez pas nécessairement besoin de tout cela, selon votre version de Django et de la façon dont vous mettez en œuvre les champs du formulaire. c'est ce que j'ai trouvé que j'avais besoin d'utiliser les widgets.
Maintenant, juste à la sortie de votre forme normale, et la JS devrait automatiquement le convertir en un champ de date. Profitez-en!
Tous les widgets utilisés par django-admin sont dans le django/contrib/admin/widgets.py fichier. Juste de l'utiliser comme d'habitude widget dans un formulaire. Ce que vous voulez est AdminDateWidget.
Qui permettra de créer une date-picker avec calendrier. Vous pouvez essayer de le personnaliser en fonction de ce que vous avez besoin de l'étendre ou de créer un nouveau widget à partir d'un scratch avec une inspiration de AdminDateWidget.
Vous pouvez le faire en forme de widget " SelectDateWidget()" comme dans cet exemple:
C'est fondamentalement un double de À l'aide de Django heure/date widgets dans le formulaire personnalisé.
La réponse a été donnée par @Dave S et @MrGlass, mais pour Django 1.2 et plus tard ce sera en outre également être nécessaire pour aider le JavaScript trouver l'admin médias:
(à partir de Carl Meyer répondre)