如何在Django管理面板中创建外键的可点击链接?

5uzkadbs  于 2023-03-31  发布在  Go
关注(0)|答案(1)|浏览(127)

如何在Django管理列表视图中使外键可点击以打开相关的详细管理页面?
目前,Django admin在列表视图中以纯文本的形式显示外键。有没有一种方法可以让这些外键成为可点击的链接,在点击时将用户引导到相关的详细信息管理页面?例如,点击付款编号时,它应该将用户带到付款详细信息管理页面,其中付款是订单模型的外键。
如何落实这一点?

admin.py

@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    ordering = ('pk',)
    list_display = ['pk', 'user', 'order_date', 'deadline', 'status', 'payment', 'total', 'debt', 'shipping']
    list_filter = ['status', 'if_extended']
    exclude = ['order_date', 'deadline', 'return_date', 'total', 'payment', 'shipping', 'if_extended', 'number_of_extensions']
    search_fields = ('pk',)
    inlines = [ItemInline]
mbzjlibv

mbzjlibv1#

给予这个

from django.urls import reverse
from django.utils.html import format_html

@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
    ...
    list_display = [
        'pk',
        'user',
        'order_date',
        'deadline',
        'status',
        'payment_link', # changed this 
        'total',
        'debt',
        'shipping',
     ]

    def payment_link(self, obj):
        related_obj = obj.payment
        url = reverse('admin:myapp_payment_change', args=[related_obj.id])  # replace 'myapp' with your app name
        return format_html('<a href="{}">{}</a>', url, related_obj)

    payment_link.short_description = 'Payment'

相关问题