我有一个跟踪项目的数据库。
每个项目可以有多个与之关联的图像。
我的模型如下所示:
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 中,并且 Item 还不存在,我可以在 post() 代码中创建 ItemImage 对象,但我没有与之关联的 Item。
我一定遗漏了一些东西,因为看起来这应该相对简单。