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
,您可能需要对图像使用稍微不同的保存逻辑。
还有可能是现有图像的预览