我遵循了本教程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
答案 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> ',reverse('all_accounts_view', args=[obj.pk]))
account_summary.allow_tags = True
不要忘记添加 从django.urls导入反向