有没有可以处理多个文件或多个图像Django的模型场? 或者是更好地使一个ManyToManyField包含图像或文件一个单独的模型?
我需要完成在Django管理员上传界面的解决方案。
有没有可以处理多个文件或多个图像Django的模型场? 或者是更好地使一个ManyToManyField包含图像或文件一个单独的模型?
我需要完成在Django管理员上传界面的解决方案。
对于2017及更高版本的家伙,有一个在Django文档的特殊部分 。 我个人的解决方案是这样的(成功的作品在管理员):
class ProductImageForm(forms.ModelForm):
# this will return only first saved image on save()
image = forms.ImageField(widget=forms.FileInput(attrs={'multiple': True}), required=True)
class Meta:
model = ProductImage
fields = ['image', 'position']
def save(self, *args, **kwargs):
# multiple file upload
# NB: does not respect 'commit' kwarg
file_list = natsorted(self.files.getlist('{}-image'.format(self.prefix)), key=lambda file: file.name)
self.instance.image = file_list[0]
for file in file_list[1:]:
ProductImage.objects.create(
product=self.cleaned_data['product'],
image=file,
position=self.cleaned_data['position'],
)
return super().save(*args, **kwargs)
没有没有,知道如何存储附带Django的多个图像的单个场。 上传的文件存储在模型文件路径字符串,因此它本质上是一个CharField
知道如何转换为蟒蛇。
典型的多重图像的关系被构建为与FK指向单独的图像模型到其相关的模型,例如ProductImage -> Product
。
这样的设置使得它很容易地添加到admin作为Inline
。
如果你是一个真正的多对多的关系,其中说的M2M领域将使意义GalleryImages
从1个或多个引用的Gallery
对象。
我必须从具有现有系统和一些调查后,单个文件多个文件改变最终使用这样的: https://github.com/bartTC/django-attachments
它应该很容易,如果你想自定义方法的子类的模型。
FilerFileField和FilerImageField在一个模型:
他们是django.db.models.ForeignKey的子类,所以适用同样的规则。 唯一的区别是,没有必要宣布什么模式,我们引用(它总是filer.models.File的FilerFileField和filer.models.Image为FilerImageField)。
简单例子models.py:
from django.db import models
from filer.fields.image import FilerImageField
from filer.fields.file import FilerFileField
class Company(models.Model):
name = models.CharField(max_length=255)
logo = FilerImageField(null=True, blank=True)
disclaimer = FilerFileField(null=True, blank=True)
在models.py同一型号的多个图像文件中的字段:
注:需要related_name属性,它就像定义一个外键关系。
from django.db import models
from filer.fields.image import FilerImageField
class Book(models.Model):
title = models.CharField(max_length=255)
cover = FilerImageField(related_name="book_covers")
back = FilerImageField(related_name="book_backs")
这取自答案代码Django的文件管理器的文件