Le Comment puis-je modifier ces choix en "16h 17h 18h"? P> admintimeewidget code> rendu dans admin pour un
DateTimefield code> affiche une icône d'une horloge et lorsque vous cliquez, vous avez le choix entre: "Maintinement de minuit 6h00". p>
6 Réponses :
Sous-classe Admintimeewidget Code> Pour inclure un DateTimeShortCutCutCutS.js modifié (Accéder à celui-ci dans une SEC), puis Sous-classe
AdminsplitDateTime Code> Pour inclure votre sous-classement
MyAdminTIMewidget Code> Au lieu de la valeur par défaut Django One:
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {'widget': MyAdminSplitDateTime},
}
Chris a une bonne réponse. Comme une alternative, vous pouvez le faire en utilisant simplement JavaScript. Placez le JavaScript suivant sur les pages où vous souhaitez les différentes options d'heure.
En fait, c'est assez élégant. Étant donné que le seul point de sous-classement consiste à remplacer le JS utilisé, votre approche est probablement probablement meilleure.
Merci, j'ai aussi aimé votre solution. Ma solution utilise moins de code, mais semble moins intentionnelle que la tienne. J'ai essayé de penser quelle solution serait plus facile à maintenir au fil du temps, notamment que Django elle-même est améliorée. J'ai aimé le vôtre parce que cela a rendu clairement clair ce qui se passait. J'ai aimé que la mine puisse être mise en œuvre sans dupliquer aucun des fichiers Django. Je ne pouvais pas vraiment comprendre quel chemin était plus responsable, alors je pensais poster la solution et laisser la foule évaluer cette approche.
Remplacer JS par DateTimeShortCutS.overriDeTimeMentions em> fonctionne uniquement avec un formulaire
(Bug: Le changement de temps dans le modèle enfant affecte le modèle parent, vous ne pouvez donc pas modifier Timefield dans le formulaire de modèle enfant par ce widget) Si vous souhaitez utiliser des options de temps personnalisées avec des inlines: P> /Static/admin/js/admin/dateTimeShortCutS.js em>
Remplacer: p> par: p>
J'ai essayé d'utiliser cette méthode et j'ai trouvé ce qui précède JavaScript ne fonctionnait pas lorsque plusieurs DateTime étaient présentes sur le formulaire.
Voici ce que j'ai fait. p>
dans ma section MODERADMIN J'ai ajouté: < / p> puis dans le fichier JS: p> note: je devais mettre à l'intérieur d'un document.Ready parce que j'ai trouvé que j'ai trouvé que Je ne pouvais pas contrôler où le script a été inclus dans la page (semble avoir été chargé avant les fichiers JS calendrier par défaut). P> P>
Je suis allé avec une approche beaucoup plus simple et cela a fonctionné pour moi. J'ai simplement ajouté des choix à mon modèle en utilisant le code suivant: p>
J'espère que cela aide p> classe de classe (modèle):
Programme = Foreigney ('Programme')
Time_of_the_day = Timefield (choix = (
(DateTime.DateTime.stryptime ('7h00', "% I:% m% p"). Temps (), '7:00 AM'),
(DateTime.DateTime.stryptime ('8h00', "% I:% m% p"). Temps (), '8:00 AM'),
(denttime.datetime.stryptime ('9h00', "% I:% m% p"). temps (), "9h00"),
(DateTime.DateTime.stryptime ('18h00', "% I:% m% p"). temps (), '18h00'),
(DateTime.DateTime.stryptime ('19h00', "% I:% M% P"). Temps (), '19h00'),
(DateTime.DateTime.stryptime ('20h00', "% I:% m% p"). temps (), '20:00'),
(DateTime.DateTime.stryptime ('à 21h00', "% I:% m% p"). temps (), '21:00'),
)) code> p>
Es-tu sûr? J'ai reçu une erreur indiquant que choix code> est une option non valide pour
Timefield code>
Travaillé pour moi en 2015, peut-être que la version actuelle ne le permet pas. Le projet avec cet extrait est toujours opérationnel.
Je dois le vérifier à nouveau au cas où j'ai orthographié quelque chose, votre idée est excellente.
Il y a une meilleure solution. Après avoir lu DoneTimeShortCutS.js Le peut être simplifié pour: Ajoutez ce code au fichier JavaScript dans 'static // time-shortctus.js' et ajoutez Meta à votre modèle d'administration: p>
Cela a fonctionné pour moi lorsque j'ai supprimé les premières et les moindres lignes dans le code JavaScript.