Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中将文件添加到表单会使编辑表单的行为有所不同-为什么?_Django_Django Forms - Fatal编程技术网

在Django中将文件添加到表单会使编辑表单的行为有所不同-为什么?

在Django中将文件添加到表单会使编辑表单的行为有所不同-为什么?,django,django-forms,Django,Django Forms,我有一个简单的模型,可以使用另一个简单的表单进行编辑,效果很好: 当我点击“编辑”时,它会正确显示编辑表单中的现有字段 当我将files=request.files添加到我的视图中时,一切都会发生变化-然后它会以某种方式忘记现有数据,并且在必填字段上留下清晰的表单和信息“此字段是必需的”(即使它们是因为此项存在而填充的) 有趣的是,它只记得先前上传的图像 views.py def添加新闻(请求): 如果request.method==“POST”: news=NewsModel(author=r

我有一个简单的模型,可以使用另一个简单的表单进行编辑,效果很好:

当我点击“编辑”时,它会正确显示编辑表单中的现有字段

当我将
files=request.files
添加到我的视图中时,一切都会发生变化-然后它会以某种方式忘记现有数据,并且在必填字段上留下清晰的表单和信息“此字段是必需的”(即使它们是因为此项存在而填充的)

有趣的是,它只记得先前上传的图像

views.py

def添加新闻(请求):
如果request.method==“POST”:
news=NewsModel(author=request.user)
form=AddNewsForm(instance=news,data=request.POST,files=request.files)#这很好用
如果form.is_有效():
form.save()
messages.success(请求“添加新闻!”)
返回重定向('main:news')
其他:
消息。警告(请求“您没有填写表单,请重试”)
其他:
form=AddNewsForm()
返回呈现(请求'news/add_news.html',{'form':form})
def编辑_新闻(请求,id):
新闻=获取对象或404(新闻模型,id=id)
form=AddNewsForm(request.POST或None,instance=news,files=request.files)#问题出在这里
如果request.POST和form.is_有效():
form.save()
messages.success(请求“更改新闻”。)
返回呈现(请求'news/add_news.html',{'form':form})
url.py

re_路径(r'^news/new/$,views.add_news,{},'news_new'),
re_路径(r'^news/edit_u(?P\d+)/$,views.edit_news,{},'news_edit'),
forms.py

class AddNewsForm(forms.ModelForm):
类元:
模型=新闻模型
字段='\uuuu所有\uuuu'
模板

添加/更改新闻
{{form}}
{%csrf_令牌%}

没有编辑新闻中的那一个
files=request.files
,一切正常。发生了什么?

也许您可以通过将过去的值设置为编辑表单的默认值来解决这个问题。多亏了这一点,您应该从已填充了以前保存的值的表单中获取编辑。也许您可以通过将过去的值设置为编辑表单的默认值来解决此问题。多亏了这一点,您应该从已经填充了以前保存的值的位置获得编辑。