0

私はdjangoadminを使用しています。

しかし、現在、すべての行の前に削除リンクはありません。選択したものを削除しましたが、モデルのすべての行で削除して編集したいと思います。

djangoadminでそれを行うにはどうすればよいですか

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_editable管理者オプションを使用して、Django管理者内でフィールドをインラインで編集可能にすることができます: https ://docs.djangoproject.com/en/1.4/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_editable

ただし、すべての行に削除リンクを追加する組み込みのオプションはありません。それはあなたが自分で追加する必要があるものです。list_display変更リストの「削除」テキストを取得するには、モデルのプロパティを組み合わせてに追加する必要があります。さらに、削除を確認するためのJavaScriptを使用する必要があります。1回のアクションで削除を実行することはありません。

Ajaxを介して削除アクションを実行するか、削除ビューなどにリダイレクトするかは、あなた次第です。それで始められることを願っています。

于 2013-03-08T03:40:59.113 に答える