0

我正在使用 django 管理员。

但是目前每行前面都没有删除链接。他们已经删除了选定的东西,但我想删除和编辑每一行模型。

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

4

2 回答 2

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'
于 2013-03-08T03:42:35.907 回答
0

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

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

是否要通过 Ajax 触发删除操作,或者是否要将它们重定向到删除视图等取决于您。希望这可以帮助您入门。

于 2013-03-08T03:40:59.113 回答