Django-fr

Forum

#1 25-07-2013 15:31:23

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

enregistrement d'un champs systematiquement

Bonjour
Je code une appli front office que je voudrai multi utilisateur
ça me me pour mes contacts et surtout pour apprendre a utiliser django au
mieux...

donc comment integrer la partie multi utilisateur pour que je ne me répete
pas ...

j 'ai 4 model disont entreprise contact tache et Notes

je suppose qu'il faut un champs proprio= models.foreignKey(User) pour
enregistrer le propriétaire
de l'information que je sauvegarde.

est-ce qu'il est possible, peut être dans une partie meta du model pour que
ce champs se remplisse systématiquement par l'utilisateur qui crée
l'information  ?

Merci pour vos idées

T.

Hors ligne

#2 25-07-2013 15:56:04

Sébastien RIGUET
Membre
Inscription : 21-07-2016
Messages : 1

Re : enregistrement d'un champs systematiquement

Il est possible d'ajouter cette information (l'utilisateur courant) au
niveau des vues, car le model ne dispose pas l'objet request qui
contient la session de l'utilisateur (puisqu'il peut être utilisé dans
plusieurs contextes). Tu peux donc ajouter l'utilisateur courant via ce
bout de code dans ta vue de création d'une note, par exemple :

def save_note(request):

     if request.method == 'POST': # If the form has been submitted...
         note = NoteForm(request.POST) # A form bound to the POST data
note.proprio = request.user
         note.save()
         return HttpResponseRedirect('/thanks/') # Redirect after POST

     form = NoteForm() # An unbound form

     return render(request, 'note.html', {
         'form': form,
     })

NoteForm sera un model from
(https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/)

Après, il est bien entendu possible de rajouter une méthode
"save_with_request" aux modèles concernés (via héritage pour faire DRY)
et de passer l'objet "request" en paramètre pour réaliser l'ajout du
prorio + la sauvegarde (attention à gérer la modification pour ne pas
réaffecter les objets).

Hors ligne

Pied de page des forums