如何将多个django模型链接到django应用程序的经过身份验证的用户。如果我想显示链接到用户的这些模型的信息,我的view.py和html模板将如何显示。在此先感谢。
以下是我的代码
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)
现在是我遇到问题的第二个模型
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)
第一个模型的表单视图非常好,没有任何问题。但是我 在为第二个模型创建表单视图时出错 这是我的第二个模型的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})
错误
/ user_profile_pic /
中的RelatedObjectDoesNotExist用户没有userprofiledp。
答案 0 :(得分:1)
与链接一个相同的方式。不要过分思考它。
两者都需要OneToOneField给用户和相关名称。视图和html中没有什么特别之处。您只需从用户模型中引用它们,就像从一个配置文件模型引用字段一样。