J'ai une application dans laquelle un utilisateur peut soumettre un formulaire qui passe dans la base de données (Postgres).
Je souhaite pouvoir envoyer automatiquement le nom d'utilisateur de l'utilisateur connecté à la même base de données, donc je peux garder trace de qui soumet. (Je ne veux pas mettre une ligne de forme avec le nom d'utilisateur, je veux que cela soit traité dans l'arrière-plan). P>
Ce que j'ai réussi à faire est d'obtenir l'identifiant utilisateur, mais il reste NULL, et je ne sais pas comment obtenir le nom d'utilisateur dans la base de données et le compléter à chaque soumission. P>
J'espère que je suis clair, p>
Mux Thanls. P>
Voici mon code P>
modèles.py p> formulaires.py p> vues.py p>
3 Réponses :
Essayez de mettre à jour votre vue comme si: BTW, paramètres.py em> p> vues.py em> p> < Pré> xxx pré> espère que cela aide! p> p> (commit = false) code> Utilisez pour créer l'instance de modèle sans vous soumettre à la base de données, puis affectez l'utilisateur actuel à Votre nouvelle instance de modèle fertidb.user = demande.user code> puis appelez .Save () code> pour valider vos données à la base de données p>
MapBox_Access_Token Code> Supposons à rester à l'intérieur Params.py Code> Si vous souhaitez le charger à partir de la variable d'environnement lors de la déploiement de la production. Comme: p>
Il y a deux problèmes ici: P>
et p>
Il suffit de changer la deuxième ligne en Vous devez enregistrer votre modèle à nouveau après avoir affecté l'utilisateur. p> utilisateur code>, mais dans votre formulaire, vous l'attribuez au nom nom d'utilisateur code>, lequel je pense est une chaîne. Strong> p> p>
user = db_models.manytomanyfield (utilisateur, on_delete = modèles.cascade) code> p>
o_form.user = demande.user.user () code> p>
o_form.user = demande.user code>. p>
merci pour les gars de l'aide.
@Tatan Quoc Ho Merci j'ai fait les modifications mais j'ai toujours un problème. La base de données affiche l'user_id, mais j'aimerais qu'il affiche le nom d'utilisateur. P>
Je suppose que mon problème est dans le fichier de modèle. Comment puis-je modifier ce qui suit, donc je reçois le nom d'utilisateur dans la base de données. P>
user = deb_models.forignkey (utilisateur, on_delete) modèles.Cascade) met l'utilisateur_id -> J'aimerais avoir le nom d'utilisateur. Comment puis-je l'appeler? P>
modèles.py p>
Essayez ceci:
demande.user code> au lieu de cela, car vous essayez de définir le champutilisateur code> du formulaire afin que cela soit supposé être unutilisateur code> (demande.user)Cela ne serait pas "rester nul". Cela causerait un TypeError car
nom d'utilisateur code> n'est pas appelable. De plus, vous n'avez pas réellement enregistré le nouvel objet à la base de données.Merci Daniel, je voudrais en fait avoir le nom d'utilisateur affiché dans la base de données. Au lieu de cela, je reçois l'user_id. Comment suggéreriez-vous que je fais cela? (Merci que j'ai maintenant enregistré le formulaire)