我正在尝试编辑模型UserProfile的数据。 这是相同的代码。
class UserprofileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['profile_photo', 'gender', 'contact_number', 'age', 'address']
def edit_user(request):
if not request.user.is_authenticated():
return render(request, 'service/login.html')
else:
userdata = UserProfile.objects.all().filter(user = request.user)
userd = UserProfile.objects.get(user2 = request.user.pk)
form = UserprofileForm(request.POST or None, instance = user2)
if form.is_valid():
user1 = form.save(commit = False)
user1.user = request.user
user1.save()
return render(request,'service/user.html', {'userdata' : userdata,})
答案 0 :(得分:3)
有问题的一行是
userdata = UserProfile.objects.all().filter(user = request.user)
在filter
中,您可以在User
模型中提供要搜索的字段。您的模型中没有User.user
字段,这就是为什么它会给您一个错误。
您还会收到userd = UserProfile.objects.get(user2 = request.user.pk)
上的错误,因为user2
不是User
模型中的字段。
以下是有关filter
方法的更多信息:
https://docs.djangoproject.com/en/1.10/topics/db/queries/#retrieving-specific-objects-with-filters
通过其唯一键获取特定用户的正确方法(以及我认为您方案中最佳解决方案)是UserProfile.objects.get(pk = request.user.pk