【问题标题】:displaying one field from InlineModel horizontally in django-admin在 django-admin 中水平显示 InlineModel 中的一个字段
【发布时间】:2018-12-17 07:52:53
【问题描述】:

我有来自 Inlinemodel 的字段('image_tag'),我想在 Orderdetail 模型的一行中显示。

class SampleImagesInline(admin.StackedInline):
    fields = ['image_tag']
    readonly_fields = ['image_tag']
    model = SampleImages
    extra = 0
@admin.register(OrderDetail)
class OrderDetailAdmin(admin.ModelAdmin):
    inlines = [SampleImagesInline]

默认情况下,这些是垂直显示的。如何在一行中显示?

【问题讨论】:

    标签: python django django-models django-forms django-admin


    【解决方案1】:

    您可以使用TabularInline。试试这样:

    class SampleImagesInline(admin.TabularInline):
        fields = ['image_tag']
        readonly_fields = ['image_tag']
        model = SampleImages
        extra = 0
    

    更新

    我想我误解了你的问题。恕我直言,您不应该使用 InLineAdmin。相反,请尝试这样:

    from django.utils.safestring import mark_safe
    ...
    
    class OrderDetailAdmin(admin.ModelAdmin):
         ...
         readonly_fields = ['image_tags',]
    
         def image_tags(self, obj):
             img_html = ""
             for image in obj.image_set.all():  # <-- get related images
                img_html += "<img src={}> ".format(image.image.url)
    
             same_line_html = '<div class="tabular inline-related last-related">{}</div>'.format(img_html)
             return mark_safe(same_line_html)
    
        image_tags.description = "Images"
    

    有关获取相关对象的更多信息,请参阅docs 此处

    【讨论】:

    • 我试过但也显示垂直。任何其他解决方案。
    • @Dilshad 请查看我的更新答案。希望有帮助
    • ` img_html += " ".format(image.url)` 而应该是 ` img_html += " ".format(image.url)图片.url)`。谢谢先生。
    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2021-04-28
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2014-05-07
    • 2011-08-05
    • 2013-08-28
    相关资源
    最近更新 更多