11
votes

django donetimewidget ne pas s'afficher

Django Newbie ici. J'ai une tentative de page d'enregistrement.

Il se compose de champs de texte (nom, nom d'utilisateur, mot de passe, etc.) et un datfield (anniversaire). P>

J'essaie d'utiliser un formulaires.dateTimeInput Widget pour le Datefield, mais lorsque la page est rendue, rien ne se passe. Est-ce que je fais quelque chose de mal? Cela a-t-il quelque chose qui oublie? Cela semble assez simple, mais je ne peux pas le faire travailler. p>

Ceci est mon formulaire P>

<form action="" method = "POST">
{{ form.as_p}}
<input type='Submit' value='Register'/>
</form>


3 commentaires

Pourriez-vous clarifier? Est-ce que l'ensemble du formulaire ne ralentit pas, ni juste le champ DateTime?


Les formulaires et les «entrées» apparaissent. C'est le widget de calendrier qui ne le fait pas.


Lorsque j'ai lu le widget de dateInput, je suis également prévu d'un contrôle de sélecteur de date graphique (comme dans Django Admin). Cependant, je suppose que c'est juste une boîte de texte simple. Pas intuitif imo.


4 Réponses :


4
votes

Vous ne devez pas utiliser un DateTimeInput avec un Datefield CODE> - Utilisez un datationInput code> ou un DateTimefield code>.

Cependant, je soupçonne ce que vous entendez par "rien ne se passe" est que les liens du sélecteur de date de calendrier n'apparaissent pas. Celles-ci ne font pas partie du cadre de formulaires standard et la documentation ne suggère pas qu'elles apparaissent avec une date / DateTimeInput. Ils font partie de l'application Admin. Si vous en avez besoin dans votre propre application, vous devez inclure explicitement les fichiers JavaScript explicitement. P>

Le moyen le plus simple de le faire est probablement d'utiliser Adminindatewidget à partir de django.contrib.admin.widgets code>, plutôt que la dateInput. Vous devrez également inclure le script JSI18N dans votre modèle: P>

<script type="text/javascript" src="/admin/jsi18n/"></script>


1 commentaires

Je suis vraiment confus à propos de l'endroit où Django est avec des widgets DateTime. Docs implique une mise à jour en 1.1 mais je ne suis pas clair ce que c'est. Si j'ai une forme comme celle-ci: EventForm (formulaires.modelform): Résumé = Forms.Charfield (label = "Nom de l'événement", widget = Forms.textInput (attrsix = {'Taille': '40'}) ) dtstart = formes.dateTimefield (widget = admindatewidget ()) dtend = formulaires.dateTimefield (widget = adminidatewidget) Le JavaScript est chargé, mais pas l'icône de calendrier apparaît sous la forme. J'aimerais une certaine clarté autour de cela car je continue à devoir retourner à JQuery.



6
votes

Le sélecteur de date du calendrier ne fait pas partie du cadre de formulaires. de
Vous pouvez cependant utiliser le widget Sélecteur de date JQQUERY

<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-min.js"></script> 
<!-- give correct location for jquery.js -->
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-ui-min.js"></script> 
<!-- give correct location for jquery-ui.js -->
<script type="text/javascript">
   jQuery(function() {
       jQuery("#id_birthday").datepicker({ dateFormat: 'yy-mm-dd' });
   });
</script>
<form method="post">
    {{ form.as_p }}
    <input type="submit" value="Create Phase" />
</form>


0 commentaires

10
votes

Le widget Django DateInput ne rend rien d'autre qu'une entrée de texte brut. Il valide toutefois la contribution de l'utilisateur contre une variété de formats, il n'est donc pas inutile.

La plupart des gens s'attendaient à ce qu'il se comporte de la même manière que le sélecteur de date trouvé dans l'interface administrative Django, il est donc certainement un peu déroutant. p>

Il est possible d'utiliser l'AdminAtwidget dans vos propres applications, mais je conseillerais contre elle. Il faut Beaucoup de violation pour le faire fonctionner .

La solution la plus simple consiste à utiliser quelque chose comme le JQuery UI DatePicker a>. Inclure simplement les éléments suivants dans le code> de votre page: p> xxx pré>

en bas, placez la ligne suivante pour activer la datePicker sur votre Éléments d'entrée: P>

<script type="text/javascript"> 
  $(function(){
    $(".dateinput").datepicker();
  });
</script>


0 commentaires

-1
votes

Vous devez utiliser un SelectDateWidget à la place. Celui-ci est rendu comme une entrée de date et non comme une entrée de texte. Récemment, j'ai eu le même problème et c'est ce dont vous avez besoin.

https: //docs.djangoproject. COM / EN / 3.0 / REF / FORMES / WIDGETS / # DJANGO.FORMS.SELLECTTDATEWIDGET


4 commentaires

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement uniquement peuvent devenir invalides si la page liée change.


Si vous avez une nouvelle question, veuillez le demander en cliquant sur le bouton Poser une question . Inclure un lien vers cette question si cela aide à fournir un contexte. - de l'avis


Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement des liaisons peuvent devenir invalides si la page liée change. - de l'avis


Le lien va à la partie spécifique de la réponse.