2017-09-12 2 views
0

Dans mon application Un utilisateur peut créer un projet en lui donnant un nom.Définir l'attribut utilisateur après la création du projet

C'est mon modèle:

class Project(models.Model): 
    name = models.CharField(max_length=250) 
    team_id = models.ForeignKey(Team, blank=True, null=True) 
    project_hr_admin = models.ForeignKey(MyUser, blank=True, null=True) 

    def get_absolute_url(self): 
     return reverse('website:ProjectDetails', kwargs = {'pk' : self.pk}) 

    def __str__(self): 
     return self.name 

qui est mon point de vue:

class ProjectCreate(CreateView): 
    model = Project 
    fields = ['name'] 
    template_name = 'project_form.html' 

Comment puis-je configurer lorsqu'un utilisateur crée un projet project_hr_admin = models.ForeignKey (MyUser, vide = True, null = True) avec son ID et l'enregistrer dans la base de données ??

Thx vous

+0

par une méthode 'save' –

+0

Mieux, en remplaçant' form_valid' sur la vue, ce qui est spécifiquement couvert dans la documentation [editing views] (https://docs.djangoproject.com/fr/1.11/topics/class-based-views/generic-editing/#models-and-request-user). –

+0

Thx Daniel Cela fonctionne parfaitement .. pourriez-vous s'il vous plaît si vous pouvez m'expliquer cette ligne super (AuthorCreate, self) .form_valid (formulaire), ou un autre doc? – Ben2pop

Répondre

0

Espérons que cela aide.

class ProjectCreate(CreateView): 
    model = Project 
    fields = ['name'] 
    template_name = 'project_form.html' 


    def form_valid(self, form): 
     form.instance.project_hr_admin = self.request.user 
     return super(ProjectCreate, self).form_valid(form) 

ou vous pouvez également réécrire form_valid fonction

def form_valid(self, form): 
     obj = form.save(commit=False) 
     obj.project_hr_admin = self.request.user 
     obj.save() 
     return HttpResponseRedirect('YOUR_SUCCESS_URL') 

Source: Django Documentation

+1

Salut kartikmaji thx pour votre réponse, j'ai utilisé le doc fourni par Daniel Roseman mais je suis sûr que le vôtre fonctionne aussi :) – Ben2pop

+0

@ Ben2pop Pas de problèmes. Heureux d'aider. :) J'ai édité la réponse. Faites-moi savoir si une autre façon fonctionne pour vous. – kartikmaji