在 Django 中更新字段不起作用
Updating Field in Django does not work
我的 views.py
中有以下内容
if request.method=='POST':
form = ExtraForm(request.POST,instance=request.user)
print ("hi")
if form.is_valid():
form.save()
print ("yes")
print ("newform is ")
else:
form = ExtraForm(instance=request.user)
context['form']=form
return render(request, "updateProfile.html",context)
现在发生的事情是我没有收到任何错误,它做的一切都很好,但它最终没有更新任何东西!!这对我来说没有意义。知道发生了什么事吗?
额外形式:
class ExtraForm(forms.ModelForm):
research_place = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'First Name','required':True}))
studies = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'Last Name','required':True}))
class Meta:
model = RegisterUser
fields = ['research_place','studies']
widgets = {
# 'image': ImageCropWidget,
}
型号:
class RegisterUser(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
biography = models.CharField(max_length=1000000,blank=True)
research_place = models.CharField(max_length=1000000,blank=True)
studies = models.CharField(max_length=1000000,blank=True)
image = models.ImageField(blank=True,null=True,upload_to='uploaded_images',default ="uploaded_images/defaultReal.jpg")
# cropping = ImageRatioField('image','200x200',size_warning=True) #width x height
avatar_thumbnail = ImageSpecField(source='image',
processors=[ResizeToFill(200, 200)],
format='JPEG',
options={'quality': 60})
activation_key = models.CharField(max_length=50)
key_expires = models.DateTimeField()
class Meta:
permissions = (
("has_uploaded", ("Has uploaded")),
("is_authenticated", ("Is authenticated")),
)
表格似乎根本无效。添加 else
子句并检查 errors:
if request.method == "POST":
form = ExtraForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
# You should perform some redirection here btw.
return redirect("/success/")
else:
print "Errors:", form.errors
context["form"] = form
else:
form = ExtraForm(instance=request.user)
context["form"] = form
return render(request, "updateProfile.html", context)
更新后:
您向表单传递了错误的用户。 request.user
是 User
类型,而您尝试更新 RegisteredUser
。您应该更新行:
form = ExtraForm(request.POST, instance=request.user)
至
form = ExtraForm(request.POST, instance=RegisteredUser.objects.get(user=request.user))
同样适用于 else
部分:
form = ExtraForm(instance=RegisteredUser.objects.get(user=request.user))
我的 views.py
中有以下内容if request.method=='POST':
form = ExtraForm(request.POST,instance=request.user)
print ("hi")
if form.is_valid():
form.save()
print ("yes")
print ("newform is ")
else:
form = ExtraForm(instance=request.user)
context['form']=form
return render(request, "updateProfile.html",context)
现在发生的事情是我没有收到任何错误,它做的一切都很好,但它最终没有更新任何东西!!这对我来说没有意义。知道发生了什么事吗?
额外形式:
class ExtraForm(forms.ModelForm):
research_place = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'First Name','required':True}))
studies = forms.CharField(max_length=256, label="", required=True, widget=forms.TextInput(attrs={'class': 'form-control','placeholder': 'Last Name','required':True}))
class Meta:
model = RegisterUser
fields = ['research_place','studies']
widgets = {
# 'image': ImageCropWidget,
}
型号:
class RegisterUser(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
biography = models.CharField(max_length=1000000,blank=True)
research_place = models.CharField(max_length=1000000,blank=True)
studies = models.CharField(max_length=1000000,blank=True)
image = models.ImageField(blank=True,null=True,upload_to='uploaded_images',default ="uploaded_images/defaultReal.jpg")
# cropping = ImageRatioField('image','200x200',size_warning=True) #width x height
avatar_thumbnail = ImageSpecField(source='image',
processors=[ResizeToFill(200, 200)],
format='JPEG',
options={'quality': 60})
activation_key = models.CharField(max_length=50)
key_expires = models.DateTimeField()
class Meta:
permissions = (
("has_uploaded", ("Has uploaded")),
("is_authenticated", ("Is authenticated")),
)
表格似乎根本无效。添加 else
子句并检查 errors:
if request.method == "POST":
form = ExtraForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
# You should perform some redirection here btw.
return redirect("/success/")
else:
print "Errors:", form.errors
context["form"] = form
else:
form = ExtraForm(instance=request.user)
context["form"] = form
return render(request, "updateProfile.html", context)
更新后:
您向表单传递了错误的用户。 request.user
是 User
类型,而您尝试更新 RegisteredUser
。您应该更新行:
form = ExtraForm(request.POST, instance=request.user)
至
form = ExtraForm(request.POST, instance=RegisteredUser.objects.get(user=request.user))
同样适用于 else
部分:
form = ExtraForm(instance=RegisteredUser.objects.get(user=request.user))