django admin 編輯頁面(change page) 自定義字段, 展示數據


最近遇到一個需求, 需要在django 的 admin 編輯頁內展示由用戶上傳的進行反饋的圖片, 還要支持點擊查看原圖, 所以需要在編輯頁內自定義 img 標簽及 a 標簽進行圖片的展示及點擊跳轉

 

import json

from django.contrib import admin
from django.utils.safestring import mark_safe

from yourapp.models import YourModel


@admin.register(YourModel)  # 注冊模型到admin站點中
class YourAdmin(admin.ModelAdmin):
    
    ...

    # 自定義一個字段
    def image_url(self, obj):
        image = obj.image
        if fb_img:
            image_html = ""
            for img_url in json.loads(image):
                artwork = ".".join(img_url.split(".")[0:-2])
                # 根據業務需求, 拿到所有圖片的url, 拼接 img 及 a 標簽
                image_html += '<a href="{}" target="_blank"><img src="{}" style="width:200px; height:200px; margin-right:2.5px; margin-left:2.5px; margin-bottom:5px"/></a>'.format(artwork, img_url)
            html = "<div>" + image_html + "</div><div>提示: 點擊圖片查看原圖</div>"
        else:
            html = "-"
        return mark_safe(html)  # 取消轉義
    image_url.short_description = "反饋圖片"
    image_url.allow_tags = True
    
    # 重寫編輯頁, 繼承父類方法
    def change_view(self, request, object_id, extra_context=None):
        self.fields = ("name", "created", "content", "image_url")  # 將自定義的字段注冊到編輯頁中
        self.readonly_fields = ("name", "created", "image_url")  # 務必將該字段設置為僅限可讀, 否則拋出異常
        return super(YourAdmin, self).change_view(request, object_id, extra_context=extra_context)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM