2

在我最近的项目中,我必须创建一个具有单个文件字段的通用模型,因为这个想法是跨多个系统模型使用多个文件上传。

为此,我使用通用外键创建了这个通用模型,并在添加视图中创建了一个带有额外 = 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(提交=假)

我不知道该怎么办了。谢谢!

4

0 回答 0