我正在建立一个包含许多Work
对象的网站。 Work
被分组为Collection
,并且每个类都有其自己的数据库模型(因此,每个Work
都具有引用其Collection
的外键)。通常,我通常一次添加所有几个Collection
对象中的Work
个。这些模型如下所示:
class Collection(models.Model):
name = models.CharField(max_length=100, default=None)
description = models.TextField(null=True, blank=True, default=None)
class Work(models.Model):
collection = models.ForeignKey(Collection, on_delete=models.CASCADE)
name = models.CharField(max_length=100, default=None)
description = models.TextField(null=True, blank=True, default=None)
imagepath = models.ImageField(upload_to=get_work_filename, default=None)
为简化将它们添加到网站的过程,我想将它们以一种形式添加。因此,我正在尝试使用自定义的ModelAdmin和Model Form:
class WorkInline(admin.StackedInline):
model = Work
class CollectionForm(forms.ModelForm):
name = forms.CharField()
description = forms.Textarea()
pictures = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = Collection
fields = '__all__'
class CollectionAdmin(admin.ModelAdmin):
form = CollectionForm
fieldsets = (
(None, {
'fields': ('name', 'abbrev', 'description', 'pictures',),
}),
)
inlines = [WorkInline]
这个想法是我填写Collection
的名称和描述,然后在该集合中以Work
的形式上传一堆图像。 Work
中的大多数字段都可以仅根据上传文件的文件名自动填充;除了description
以外,我可能想逐个工作地手动更改。当我单击页面底部的“添加”按钮时,我将执行一个例程以正确处理表单,构造模型实例并将其添加到数据库中。
我想要的是让Work
中的所有WorkInline
模板在上传文件后立即自动填充 ,这样我就可以对其进行编辑。我还是Django的新手,所以我真的不知道有什么选择,在找到关于该主题的任何有用信息之前,我用光了搜索词。有什么好方法吗?