Django Admin列表页面:自定义操作按钮(url)问题,出什么问题了?

时间:2018-09-26 13:38:37

标签: django url admin

我遵循了本教程https://books.agiliq.com/projects/django-admin-cookbook/en/latest/action_buttons.html

这是我代码的相关部分:

@admin.register(Partner)
class PartnerAdmin(admin.ModelAdmin):
    change_list_template = 'change_list.html'
    model = Partner

。 。

def get_urls(self):
    return super().get_urls() + [path('sync/', self.sync_partners, name='partners_sync_partners')]

@staff_member_required
def sync_partners(self, request):
    #TODO: Sync code should go here
    self.message_user(request, "Partners sync complete")
    return HttpResponseRedirect("../")

模板上的url用{% url 'admin:partners_sync_partners' %}引用,它指向 / admin / partners / partner / sync / ,我认为它应该是 / admin / partners / sync /

当我单击按钮时,出现此错误:

ID为“ sync”的合作伙伴不存在。也许它被删除了?

我想这个问题与生成的网址有关。 我的代码在 partners / admin.py 中的应用程序“伙伴”中,我的模板在partners / templates / change_list.html

PS:我正在使用Django 2.1.1和Python 3.6.5

1 个答案:

答案 0 :(得分:0)

以下是我创建的自定义用户的示例,其中我必须在django管理站点中为自定义用户显示所有字段。

因此您可以在列表显示中添加该按钮

list_display = ('email', 'phone','account_name','account_number','bank_name','bsb_number','account_summary')

现在使该按钮成为一种方法,并在您要呈现它的位置提供url。

def account_summary(self,obj):
    ow_tags = True
    return format_html(
        '<a class="button" href="{}">Account</a>&nbsp;',reverse('all_accounts_view', args=[obj.pk]))
account_summary.allow_tags = True

不要忘记添加 从django.urls导入反向