2017-06-23 5 views
1

複数のdjangoモデルをdjangoアプリケーションの認証済みユーザーにリンクする方法これらのモデルの情報を表示するにはどうすればview.pyとhtmlテンプレートが表示されますかユーザへのリンクです。前もって感謝します 。私は最初のモデルのフォームビューは、何の問題もなく、かなり良い問題複数のモデルを作成してDjangoユーザーを拡張する

class UserProfileDp(models.Model): 
    user = models.OneToOneField(User,on_delete=models.CASCADE,related_name="userprofiledp") 
    profile_dp = models.ImageField(upload_to="profile_image" ,null= True,blank=True) 
    def __str__(self): 
     return self.profile_dp 
@receiver(post_save,sender=User) 
def create_profile(sender,instance,created,**kwargs): 
if created: 
    UserProfileDp.objects.create(user=instance) 
post_save.connect(create_profile,sender=User) 

を作品しているところである第2のモデルは今

class UserProfile(models.Model): 
    user = models.OneToOneField(User,on_delete=models.CASCADE,related_name="userprofile") 
    experience= model.TextField(max_Length=500,null=True,blank=False) 
    def __str__(self): 
     return self.user.username 
@receiver(post_save,sender=User) 
def create_profile(sender,instance,created,**kwargs): 
    if created: 
     UserProfile.objects.create(user=instance) 
post_save.connect(create_profile,sender=User) 

を次のようにここで

は私のコードです.but i 2番目のモデルのフォームビューを作成する際にエラーが発生する 次は2番目のモデルのview.pyコードです

def user_profile_pic(request): 
if request.method == 'POST': 

    profile_form = User_dp_form(request.POST,request.FILES,instance=request.user.userprofiledp) 
    if profile_form.is_valid(): 

     profile_form.save() 
     messages.success(request,'Your Profile has been Updated') 
     return redirect('success:profile_account') 
    else: 
     messages.error(request,'fill out the fields correctly') 
else: 

    profile_form = ProfileForm(instance=request.user.userprofiledp) 
return render(request,"success/user_account/edit_profile.html",{'profile_form':profile_form}) 

エラー

RelatedObjectDoesNotExistで/ user_profile_pic/

ユーザーにはuserprofiledpを持っていません。

答えて

1

同じ方法でリンクします。それを考え直してはいけません。

両方とも、ユーザーと関連する名前にOneToOneFieldが必要です。ビューとHTMLのどちらも特別なものはありません。 1つのプロファイルモデルからフィールドを参照するのと同じように、ユーザーモデルから両方を参照するだけです。

関連する問題