【问题标题】:add link to Actions in Django Admin在 Django Admin 中添加到 Actions 的链接
【发布时间】:2017-05-25 21:38:21
【问题描述】:

在 Django admin 中,我有一个向模板发送信息的打印按钮。我想添加到Action 下拉链接,我在其中复选框选择所需的条目,并在Action 下拉列表中选择 Print。 但是当我添加到Aсtion 下拉列表的链接时,我收到关于获取第三个参数的错误。我无法理解这是第三个论点。

admin.py

@admin.register(Salary)
class SalaryAdmin (admin.ModelAdmin):
    list_display = ('worker', 'salary_uah', 'dates', 'button')
    search_fields = ('worker', 'salary_uah', 'dates')
    list_filter = ('worker', 'date')
    actions = ['button']

    def button(self, obj):
        return '<a class="button" href="{}">Print</a>'.format(reverse('act', args=[obj.pk]))

    button.short_description = 'Actions'
    button.allow_tags = True

urls.py

urlpatterns = [
    url(r'^$',home, name='home'),
    url(r'^add/$',add_worker, name='add'),
    url(r'^act/(?P<obj>[\w-]+)$',acts, name='act')
]

models.py

class Salary (models.Model):
    worker = models.ForeignKey(Worker)
    salary_uah = models.IntegerField ('Salary')
    date = models.DateTimeField('Date', default=datetime.datetime.utcnow())

views.py

def acts (request, obj):
    if not request.user.is_authenticated():
        return redirect('admin:login')
    salary = Salary.objects.get(id=obj)
    workers = Worker.objects.filter(id=salary.worker.pk).values()
    salary = Salary.objects.filter(id=obj).values()
    return render(request, 'zpapp/act.html', {'workers':workers, 'salary':salary })

错误信息:

TypeError at /admin/zpapp/salary/
button() takes 2 positional arguments but 3 were given

您能帮我在 Action 中添加一个链接吗?

【问题讨论】:

    标签: python django python-3.x django-admin


    【解决方案1】:

    我认为你在这里走错了路。动作应该只是一个文本,将由 django 自动添加到下拉列表中。此处不支持 HTML 链接 AFAIK。进一步:

    首先,我们需要编写一个函数,当动作发生时被调用 由管理员触发。动作函数只是常规的 接受三个参数的函数:

    当前的 ModelAdmin 一个代表当前的 HttpRequest request,一个 QuerySet,包含由 用户。我们的发布这些文章功能不需要 ModelAdmin 或 请求对象,但我们将使用查询集:

    来源:

    您的操作如果要完全可用,则必须是

    def button(self, request, queryset):
    

    另一方面,如果您想要将 HTML 按钮添加到列表视图或编辑视图,则需要修改管理模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 2012-02-24
      • 2012-06-30
      • 2016-06-29
      • 2015-05-04
      相关资源
      最近更新 更多