[PYTHON] [Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm

Qu'est-ce que le formulaire modèle?

ModelForm est une instance pré-préparée qui peut être appelée avec django.forms.Modelform. En créant une classe Form qui hérite de cette instance, vous pouvez faire référence à la table définie dans Models.py telle quelle. En d'autres termes, il est utilisé lorsque vous souhaitez enregistrer ou mettre à jour la base de données en saisissant un formulaire de l'utilisateur.

Où utilisez-vous cette technique?

Par exemple, pour un modèle de données qui a "titre, heure actuelle, créateur" dans les champs, lors de la mise en œuvre de la saisie du formulaire par l'utilisateur, la tâche de dire à l'utilisateur l'heure actuelle et le créateur réduira l'UX. Cela peut être réalisé en donnant une valeur initiale au formulaire et en masquant le champ correspondant lorsque vous souhaitez donner des informations dont l'utilisateur n'a pas besoin de se soucier ou automatiquement.

Tout d'abord, comment définir le masquage sur le modèle

forms.py


from django import forms
from .models import Event


class EventCreateForm(forms.ModelForm):

    class Meta:
        model = Event
        fields = ('eventtitle','eventdate','location','agenda','author')
        widgets={'author':forms.HiddenInput()
        }

Pour expliquer brièvement à ceux qui ne connaissent pas ModelForm, différentes conditions sont fondamentalement passées dans la classe Meta. Dans la variable de modèle, spécifiez la classe Event de models.py en l'instanciant. Dans la variable fields, spécifiez les champs à inclure dans le formulaire sous forme de type de liste.

La variable widgets vous permet de spécifier diverses options telles que la modification de l'affichage d'entrée du champ en html et la spécification d'un message d'erreur.

** Cette fois, tout d'abord, le champ auteur est défini sur Entrée masquée dans ces widgets pour le masquer. ** **

Ajouter des informations de formulaire dans views.py

views.py


from django.contrib.auth.models import User
from .forms import EventCreateForm

def createeventfunc(request):
    if request.method == 'POST':
        form =EventCreateForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('Destination de transition')
        return render(request,'createevent.html',{'form':form})
    #Au moment de la méthode Get, exécutez ci-dessous
    #default_Définissez la valeur sur le champ auteur dans les données
    else:
        default_data = {'author':User.objects.get(pk=request.user.pk)}
        form = EventCreateForm(default_data)
        return render(request,'createevent.html',{'form':form})

La valeur par défaut est donnée en argument lors de la création d'un objet de formulaire. Dans l'exemple ci-dessus, lorsque url et createeventfunc () sont appelés par la méthode Get, un objet de formulaire est créé avec author: l'id (pk) de l'utilisateur connecté comme données par défaut. Et nous rendons cet objet de formulaire. Lorsque soumettre est pressé dans le formulaire (en supposant une soumission POST), l'instruction if ci-dessus est exécutée. Tout ce que vous avez à faire est form.save () pour terminer l'enregistrement dans la base de données.

Recommended Posts

[Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm
Comment vérifier le comportement d'ORM avec un fichier avec django
Comment refléter CSS dans Django
Comment démarrer avec Django
Comment effectuer un traitement arithmétique avec le modèle Django
Comment supprimer des sessions expirées dans Django
Comment utiliser BigQuery en Python
Comment gérer des valeurs consécutives dans MySQL
Comment faire des événements envoyés par le serveur dans Django
Comment stocker des données CSV dans Amazon Kinesis Streams avec une entrée standard
Comment gérer les caractères déformés dans json de Django REST Framework
Comment gérer les fuites de mémoire dans matplotlib.pyplot
[REAPER] Comment jouer à Reascript avec Python
Comment implémenter la fonctionnalité de type helper Rails dans Django
Comment développer une application de panier avec Django
Comment refléter ImageField dans Django + Docker (oreiller)
Comment gérer les erreurs d'exécution dans subprocess.call
Comment implémenter "named_scope" de RubyOnRails avec Django
Comment utiliser tkinter avec python dans pyenv
Comment créer une API Rest dans Django
Comment masquer l'entrée utilisateur dans l'interface graphique PySimple
Comment convertir / restaurer une chaîne avec [] en python
Comment obtenir plusieurs objets de modèle au hasard dans Django
Expliquez en détail comment créer un son avec python
Comment gérer l'échec de l'initialisation pyenv dans Fish 3.1.0
Comment faire du zéro-padding sur une ligne avec OpenCV
Comment exécuter des tests avec Python unittest
Comment charger des fichiers dans Google Drive avec Google Colaboratory
Comment accéder avec cache lors de la lecture_json avec pandas
Comment utiliser le bootstrap dans la vue de classe générique Django
Comment extraire des valeurs Null et des valeurs non Null avec des pandas
Comment faire un clic droit en utilisant la saisie au clavier dans RPA?
Comment télécharger des fichiers dans la vue de classe générique Django
Comment utiliser Decorator dans Django et comment le créer
Comment référencer des fichiers statiques dans un projet Django
[Python] Comment afficher les valeurs de liste dans l'ordre
Comment gérer l'exécution de la transaction: échec dans Anaconda
Comment utiliser fixture dans Django pour saisir des exemples de données associés au modèle utilisateur
Comment écrire une validation personnalisée dans Django REST Framework
[Go language] Comment obtenir l'entrée du terminal en temps réel
Comment utiliser ORM / Query Builder Orator de type Laravel avec Django
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Comment mettre à jour les informations utilisateur sur Django RemoteUserMiddleware login
Comment enregistrer les mêmes données plusieurs fois avec une seule entrée sur l'écran de gestion de Django
Comment manipuler le DOM dans iframe avec Selenium
Comment résoudre la protection CSRF lors de l'utilisation d'AngularJS avec Django
Comment lancer avec Theano
Comment générer une requête à l'aide de l'opérateur IN dans Django
Comment obtenir toutes les clés et valeurs du dictionnaire
[AWS] Comment gérer l'erreur "Point de code non valide" dans CloudSearch
Comment modifier avec SQLAlchemy?
Je n'arrive pas à me connecter à la page d'administration avec Django 3
Pour les débutants, comment gérer les erreurs courantes dans les keras
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Dans Django, comment abréger la longue chaîne de caractères affichée au milieu ...