私はユーザープロファイルモデルを作成しました。私はモデルをデータベースと同期させるために移行しました。しかし、私がにルーティングするときにUser has no profile
のエラーが発生しています。update_profile
ビューを呼び出す必要があります。request
オブジェクトがPOSTメソッドであるかどうかを確認する前に表示されますが、シェルにも表示されません。私はどこで間違っていますか?RelatedObjectDoesNotExist at/profile
は、ここに私のコード
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})