gpt4 book ai didi

python - 如何在 Django Admin 的 "Change"页面中显示内联上传的图像?

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:50 25 4
gpt4 key购买 nike

我正在尝试在 Django Admin 的“更改列表”页面中显示内联上传的图像:

enter image description here

下面是我的代码:

# "models.py"

from django.db import models

class Product(models.Model):
name = models.CharField(max_length=50)
price = models.DecimalField(decimal_places=2, max_digits=5)

def __str__(self):
return self.name

class ProductImage(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
image = models.ImageField()

def __str__(self):
return self.image.url
# "admin.py"

from django.contrib import admin
from .models import Product

class ProductImageInline(admin.TabularInline):
model = ProductImage

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
inlines = (ProductImageInline,)

那么,如何在 Django Admin 的“更改”页面中显示内联上传的图像?

最佳答案

经过大量挖掘,我设法做到了。不幸的是我找不到我使用的来源(选项卡太多,太多都不起作用..)。所以我的想法是创建一个图像小部件,附加一些 html 脚本。

from django.contrib.admin.widgets import AdminFileWidget

class AdminImageWidget(AdminFileWidget):
def render(self, name, value, attrs=None):
output = []
if value and getattr(value, "url", None):
image_url = value.url
file_name = str(value)
output.append(u' <a href="%s" target="_blank"><img src="%s" alt="%s" width="150" height="150" style="object-fit: cover;"/></a> %s ' % \
(image_url, image_url, file_name, _('')))
output.append(super(AdminFileWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))


class CollectionImageInline(admin.TabularInline):
formfield_overrides = {models.ImageField: {'widget': AdminImageWidget}}

结果:(不管这个问题,我都将管理主题更改为默认主题) enter image description here

关于python - 如何在 Django Admin 的 "Change"页面中显示内联上传的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44025254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com