Django 管理仪表板 ImageField 问题

问题描述 投票:0回答:1

在我的 django 管理仪表板中,我为 ImageField 创建了一个模型,问题是我将其用于轮播,但为此我需要上传多个图像,django 限制一次只能上传一张图像,我尝试过环顾四周大约3个小时,我找不到任何解决方案,每次我发现一些东西要么不再工作,要么不是我想要的。所以总的来说,我只想要一个“选择文件”按钮的解决方案,当我单击它时,我可以选择多个文件/img

我尝试寻找解决方案超过3个小时,但找不到任何可行的方法

python django django-admin admin
1个回答
0
投票

ImageField 只能存储一张图像。 你能做什么:

为图像制作单独的模型:

#models.py
class MyImage(model.Model):
    image = models.ImageField('my image', default=None)
    
    #here you need to specify what model this images will be related to(which model you want to add several images with ImageField) lets say it is model "MyModel"
    my_model = models.ForeignKey(MyModel,
                          on_delete=models.CASCADE,
                          related_name='images')

    def preview(self):
        # this is needed to see model as actually image in admin
        full_url = str(self.image.url)
        return format_html('<img src="{}", width=200, height=200>', full_url)

然后您需要将其添加为管理中的内联:

#admin.py
from .models import Image, MyModel
from django.contrib import admin

class ImageInline(admin.TabularInline):
    model = Image
    extra = 1
    fields = ('image', 'preview')
    readonly_fields = ('preview', )


@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):

    inlines = [ImageInline]



admin.site.register(Image)

    
© www.soinside.com 2019 - 2024. All rights reserved.