2
カスタムユーザーモデルを拡張してプロファイルモデルを作成したアカウントアプリケーションがあります。ユーザーが自分のプロフィール情報を編集できるビューを作成し、対応するUserEditFormとProfileEditFormも持っています。現在のところ、ユーザーはプロフィールを持っていないので、編集フォームを開くと、「RelatedObjectDoesNotExist at/account/edit /」というエラーが表示されます。 "ユーザーにプロファイルがありません" adminを使用してプロファイルを作成しようとしましたが、エラーは消えてしまいます。これを私のviews.pyファイルでどのように修正できますか?RelatedObjectDoesNotExist Djangoでカスタムユーザーモデルを使用中
views.py
@login_required
def edit(request):
if request.method =='POST':
user_form = UserEditForm(instance=request.user,data=request.POST)
profile_form = ProfileEditForm(instance=request.user.profile,data=request.POST,files=request.FILES)
if user_form.is_valid() and profile_form.is_valid():
user_form.save()
profile_form.save()
messages.success(request,'Profile updated successfully')
else:
messages.error(request,'Error updating your profile')
else:
user_form = UserEditForm(instance=request.user)
profile_form = ProfileEditForm(instance=request.user.profile)
context = {
'user_form':user_form,
'profile_form': profile_form
}
return render(request,'account/edit.html',context)
models.py
CATEGORY_CHOICES = (
('SA','School Admin'),
('T','Teacher'),
('S','Student'),
('P','Parent'),
)
class Profile(models.Model):
eduser = models.OneToOneField(settings.AUTH_USER_MODEL)
photo = models.ImageField(upload_to='users/%Y/%m/%d',blank=True)
about_me = models.TextField(max_length=200,blank=True)
category = models.CharField(max_length=1,choices=CATEGORY_CHOICES,blank=True)
date_of_birth = models.DateField(blank=True,null=True)
def __str__(self):
return 'Profile for user {}'.format(self.eduser.username)
forms.py
class UserEditForm(forms.ModelForm):
class Meta:
model = User
fields = ('first_name','last_name','email')
class ProfileEditForm(forms.ModelForm):
class Meta:
model = Profile
fields = ('category','date_of_birth','about_me','photo')
神様ありがとうございました!私はこれがジャンゴのバグかどうか尋ねたいですか? – Belter