如何在django管理员更改列表页面中删除和编辑链接

时间:2013-03-08 03:35:09

标签: python django

我正在使用django admin。

但目前每行都没有删除链接。他们删除了所选的东西,但我希望删除并编辑每一行模型。

我怎么能在django admin中做到这一点

2 个答案:

答案 0 :(得分:2)

class MyAdmin(models.ModelAdmin):
    list_display = ('other_field', 'delete_link', 'edit_link')


    def delete_link(self, obj):
        info = obj._meta.app_label, obj._meta.module_name
        url = reverse('admin:%s_%s_delete' % info, args=(obj.id,))
        return '<a href="%s">Delete</a>' % url
    delete_link.allow_tags = True
    delete_link.short_description = 'Delete'

    def edit_link(self,obj):
        return u'<a href="/admin/%s/%s/%s">Edit</a>' % (
             obj._meta.app_label, obj._meta.module_name, obj.id)
    edit_link.allow_tags = True
    edit_link.short_description = "Edit"

<强>更新

def action_link(self, obj):
    app_name = obj._meta.app_label
    url_name = obj._meta.module_name
    data_id = obj.id

    return """
         <ul>
            <li><a href="/admin/{0}/{1}/{2}">Edit</a></li>
            <li><a href="/admin/{0}/{1}/{2}/delete">Delete</a></li>
         </ul>
         """.format(
         obj._meta.app_label, 
         obj._meta.module_name, 
         obj.id)
action_link.allow_tags = True
action_link.short_description = 'Actions'

答案 1 :(得分:0)

可以使用list_editable管理员选项在Django管理员中内联编辑字段:https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_editable

但是,没有内置选项可以为每一行添加删除链接。这是你需要自己添加的东西。您需要使用模型上的属性组合添加到list_display,以便在更改列表中获取“删除”文本,再加上一些JavaScript来确认删除。我不会在一个动作中触发删除。

由您决定是否要通过Ajax触发删除操作,或者是否要将它们重定向到删除视图等等。希望能让您入门。