J'ai créé le modèle de profil utilisateur. J'ai migré le modèle pour syn avec la base de données. Cependant, je reçois une erreur de User has no profile
lorsque je route vers /profile (whose url is this url(r'^profile$', views.update_profile, name="profile"),)
qui devrait appeler la vue update_profile
où j'ai imprimé l'objet request
avant de vérifier s'il s'agit d'une méthode POST ou non mais il n'est pas non plus affiché dans le shell. Où ai-je mal fait?RelatedObjectDoesNotExist at/profile
Voici mon code
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=600, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(blank=True, null=True)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
post_save.connect(save_user_profile, sender=User)
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email')
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
exclude = ('user',)
def update_profile(request):
print('user ################', request.user, request.user.profile)
if request.method == 'POST':
user_form = UserForm(request.POST, instance=request.user)
profile_form = ProfileForm(
request.POST or None, instance=request.user.profile)
if user_form.is_valid() and profile_form.is_valid():
user_form.save()
profile_form.save()
messages.success(
request, ('your profile was successfully updated!'))
return redirect('products:profile')
else:
messages.error(
request, ('There was an error updating your profile'))
else:
user_form = UserForm(instance=request.user)
profile_form = ProfileForm(instance=request.user.profile)
return render(request, 'dashboard/company/profile.html', {'user_form': user_form, 'profile_form': profile_form})