簡體   English   中英

Django-admin:如何在記錄更改列表中顯示對象信息頁面的鏈接而不是編輯表單?

[英]Django-admin : How to display link to object info page instead of edit form , in records change list?

我正在為正在處理的應用程序定制Django-admin。 到目前為止定制工作文件,添加了一些視圖。 但我想知道如何更改change_list顯示中的記錄鏈接以顯示信息頁面而不是更改表單?!

在這篇博文中: http//www.theotherblog.com/Articles/2009/06/02/ extend-the-django-admin-interface / Tom說:

“您可以通過定義函數然后添加my_func.allow_tags = True來在列表視圖中添加圖像或鏈接”

我不太明白!!

現在我有配置文件功能,當我點擊記錄列表中的成員我可以顯示它(或添加另一個名為 - 配置文件 - 的按鈕),還有如何為每個成員添加鏈接(編輯:重定向我編輯)該成員的表格)。

我怎么能做到這一點?!

如果我理解您的問題,您想要將自己的鏈接添加到列表視圖,並且您希望該鏈接指向您創建的某個信息頁面。

為此,請創建一個函數以在Admin對象中返回鏈接HTML。 然后在列表中使用該功能。 像這樣:

class ModelAdmin(admin.ModelAdmin):
    def view_link(self):
        return u"<a href='view/%d/'>View</a>" % self.id
    view_link.short_description = ''
    view_link.allow_tags = True
    list_display = ('id', view_link)

看一下: http ://docs.djangoproject.com/en/dev/ref/contrib/admin/,ModelAdmin.list_display part,它說:表示模型屬性的字符串。 這與callable幾乎相同,但在此上下文中self是模型實例。 這是一個完整的模型示例:

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    color_code = models.CharField(max_length=6)

def colored_name(self):
    return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name)
colored_name.allow_tags = True

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name')

所以我想,如果你將這兩個方法添加到Person

def get_absolute_url(self):
    return '/profiles/%s/' % (self.id)

def profile_link(self):
    return '<a href="%s">%s</a>' % (self.get_absolute_url(), self.username)
profile_link.allow_tags = True

並將PersonAdmin更改為

class PersonAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'colored_name', 'profile_link')

然后你完成了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM