ничего не сохраняется после обновления формы - PullRequest
0 голосов
/ 18 июня 2020

У меня есть модели Candidat и модели Experience_Pro, как показано ниже, с соотношением fk между ними. Я могу зарегистрировать или войти в систему кандидата (пользователя) и страницу профиля с указанием имени и фамилии этого кандидата, а также форму для Experience_Pro, которую пользователь может добавить, если она у него есть. но когда я ввожу всю информацию в форму Experience_Pro и нажимаю обновить, в кандидат ничего не добавляется

Я не знаю, что мне не хватает, но форма отображается без ошибок, и даже после обновления профиля нет ошибки, но ничего не сохраняется в Candidat

models.py

class Candidat(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    experience_Pro = models.ForeignKey('Experience_Pro' ,on_delete=models.CASCADE,blank=True, 
                                         null=True,default='')

class Experience_Pro(models.Model):
    annee_debut = models.IntegerField()
    annee_fin = models.IntegerField()
    description_exp_pro = models.TextField(null=True,blank=True)

forms.py

class UpdateCandidat(forms.ModelForm):
    class Meta:
       model=Candidat
       fields=['experience_Pro']

class CreateExperience_Pro(forms.ModelForm):
    class Meta:
        model=Experience_Pro
        fields='__all__'

views.py

@login_required
def profil(request):
   exp_form = CreateExperience_Pro()
   c_form = UpdateCandidat()
   if exp_form.is_valid():
       exp = exp_form.save()
       candidat = c_form.save(commit=False)
       candidat.save(experience_Pro=exp)
       return redirect('profil')
   context={
      'exp_form':exp_form
   }
   return render(request ,'candidats/profil.html',context)

profil . html

<h1>Profil Candidat</h1>
    <p>Prenom: {{ user.first_name }}</p>
    <p>Nom: {{ user.last_name }}</p>
    <p>Email: {{ user.email }}</p>

    <form method="POST" action="">
       {% csrf_token %}
       {% comment %} {{ c_form }} {% endcomment %}
       {{ exp_form }}
       <input type="submit"  value="Update">
   </form>

1 Ответ

0 голосов
/ 18 июня 2020

Вам нужно обновить:

@login_required
def profil(request):
    if request.method == 'POST':
        exp_form = CreateExperience_Pro(request.POST)
        c_form = UpdateCandidat(request.POST)
        if exp_form.is_valid() and c_form.is_valid():
            exp = exp_form.save()
            candidat = c_form.save()
            return redirect('profil')
        else:
            context = {
                'exp_form': exp_form,
                'c_form': c_form,
            }
            return render(request, 'candidats/profil.html', context)
    else:
        exp_form = CreateExperience_Pro()
        c_form = UpdateCandidat()
        context = {'exp_form': exp_form, 'c_form': c_form}
        return render(request, 'candidats/profil.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...