Python Django表单值在视图中未更改
我目前正试图在Python Django表单值在视图中未更改,python,django,Python,Django,我目前正试图在views.py文件中设置foreignKey的值,但它没有改变 models.py 类项(models.Model): sht=models.ForeignKey(工作表,on_delete=models.CASCADE,blank=True,null=True) name=models.CharField(最大长度=100) amount=models.IntegerField(默认值=1) 定义(自我): 返回self.name views.py def附加项(请求,段塞)
views.py
文件中设置foreignKey
的值,但它没有改变
models.py
类项(models.Model):
sht=models.ForeignKey(工作表,on_delete=models.CASCADE,blank=True,null=True)
name=models.CharField(最大长度=100)
amount=models.IntegerField(默认值=1)
定义(自我):
返回self.name
views.py
def附加项(请求,段塞):
sheet=sheet.objects.get(slug=slug)
form=forms.AddItem()
如果request.user==sheet.author:
如果request.method==“POST”:
form=forms.AddItem(request.POST)
如果form.is_有效():
保存(commit=False)
form.sht=Sheet.objects.get(slug=slug)#这是它应该更改的地方
form.save()
返回重定向('sheets:detail',slug=slug)
其他:
form=forms.AddItem()
form.sht=Sheet.objects.get(slug=slug)
返回呈现(请求'sheets/addItem.html',{'form':form,'slug':slug})
其他:
返回重定向('工作表:列表')
保存表单后,在管理控制台中查看后,sht
永远不会更改,并且仍然等于blank
。我已经确认,当views.py运行Sheet.objects.get(slug=slug)
时,存在Sheet
对象。在模型表单上调用form.save()时,它将始终返回一个模型实例。
这里要做的是在该实例上设置一个关系
您可能认为您正在修改一个相同的东西,但您正在表单上再次调用.save()
,这将导致创建一个新实例,而不管您以前做了什么
这可能会解决您的问题:
if form.is_valid():
instance = form.save(commit=False)
instance.sht = Sheet.objects.get(slug=slug)
instance.save()
return redirect('sheets:detail', slug=slug)