我有以下型号:
class AModel(BaseModel):
a_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200)
a_images = models.ManyToManyField(BModel)
class BModel(BaseModel):
images = ImageField(upload_to='/')
我想以AModel管理员形式显示BModel图像。我可以使用
class BModelInline(admin.TabularInline):
model = AModel.a_images.through
如何在AModel表单管理员中以表格格式显示图像预览?我已经尝试了覆盖formfield,但是似乎不起作用。
formfield_overrides = { models.ImageField: {'widget': AdminImageWidget}}
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="150px"/></a> ' % \
(image_url, image_url, file_name))
output.append(super(AdminFileWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))
答案 0 :(得分:0)
如果您只想在管理模型中显示AModel
的图像,是否尝试过类似的方法?:
class AModelAdmin(admin.ModelAdmin):
readonly_fields = ('images',)
def images(self, obj):
html = '<a href="{url}" target="_blank"><img src="{url}" /></a>'
return format_html(''.join(html.format(url=image.url) for image in obj.a_images))
也可以使用Django模型中的方法来实现