在我最近的项目中,我必须创建一个具有单个文件字段的通用模型,因为这个想法是跨多个系统模型使用多个文件上传。
为此,我使用通用外键创建了这个通用模型,并在添加视图中创建了一个带有额外 = 1 字段的表单集,并在模板中通过 jquery 在我的表单集中添加了表单。
此外它安静地工作,但我无法调整我的编辑视图。
在我的编辑视图中,我尝试了一下:
ModelGenericFormset = modelformset_factory(
ModelsFileGeneric,
form=AddModelsGenericForm
)
query_files = ModelsFileGeneric.objects.filter(
object_id=model_related_to_generic_model_with_file_field.id,
)
files = ModelGenericFormset(queryset=query_files)
在 request.post 中:
files_form_set = ModelGenericFormset(
request.POST,
request.FILES
)
for file_form in files_form_set:
file = file_form.save(commit=False)
setattr(
'upload_destination',
'path_to_upload'
)
file.content_object = model_related_to_generic_model_with_file_field
file.save()
一个观察:由于这个文件字段所在的模型是一个非常通用的模型(为此使用通用外键),我还需要在运行时(在帖子后的保存视图中)更改upload_to属性该字段(这已经修复并且可以正常工作)。我制作了这个版本的“upload_to”属性,因为根据我发送多个文件的模型,它会改变保存文件的路径。
但是在保存编辑视图时会发生此错误:
无法更改 ModelsFileGeneric,因为数据未验证。
错误在于:
文件 = file_form.save(提交=假)
我不知道该怎么办了。谢谢!