Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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
Python 如何在Django中处理多文件输入字段_Python_Django_Python 3.x - Fatal编程技术网

Python 如何在Django中处理多文件输入字段

Python 如何在Django中处理多文件输入字段,python,django,python-3.x,Python,Django,Python 3.x,我有一个跟踪项目的数据库 每个项目都可以有多个与其关联的图像 我的模型是这样的: class Item(models.Model): name = ... price = ... description = ... class ItemImage(models.Model): item = models.ForeignKey("Item", on_delete=models.CASCADE, related_name="images") class ItemA

我有一个跟踪项目的数据库

每个项目都可以有多个与其关联的图像

我的模型是这样的:

class Item(models.Model):
    name = ...
    price = ...
    description = ...

class ItemImage(models.Model):
    item = models.ForeignKey("Item", on_delete=models.CASCADE, related_name="images")
class ItemAdd(CreateView):
    model = Item
    fields = ['name', 'price', 'description']
    ...

class ItemEdit(UpdateView):
    model = Item
    fields = ['name', 'price', 'description']
    ...
在尝试将图像字段添加到每个项目之前,我的视图如下所示:

class Item(models.Model):
    name = ...
    price = ...
    description = ...

class ItemImage(models.Model):
    item = models.ForeignKey("Item", on_delete=models.CASCADE, related_name="images")
class ItemAdd(CreateView):
    model = Item
    fields = ['name', 'price', 'description']
    ...

class ItemEdit(UpdateView):
    model = Item
    fields = ['name', 'price', 'description']
    ...
为了添加图像字段,我更改了我的视图,如下所示:

class ItemAdd(CreateView):
    model = Item
    form_class = ItemEditForm
    ...

class ItemEdit(UpdateView):
    model = Item
    form_class = ItemEditForm
    ...
并创建了此表单:

class ItemEditForm(forms.ModelForm):
    images = forms.ImageField(required=False, widget=forms.ClearableFileInput(attrs={'multiple': True}))

    class Meta:
        model = Item
        fields = ('name', 'price', 'description')
这会将文件输入字段添加到我的模板中,但实际上不会对用户选择的图像执行任何操作

Django的文档中有一些关于如何处理多个文件上传的信息,这就是我获得上述图像字段代码的地方,但是示例代码似乎根本不知道模型。如果正在编辑的表单在CreateView中,并且该项还不存在,我可以在post()代码中创建ItemImage对象,但我没有与之关联的项


我一定遗漏了什么,因为这看起来应该相对简单。

参考链接中的示例代码建议:
…然后覆盖FormView的post方法…
-您需要为视图中的图像添加保存逻辑

对于基于类的
CreateView
这是以
格式\u valid()
完成的:

对于
UpdateView
,您可能需要对图像使用稍微不同的保存逻辑。 还有可能是现有图像的预览