在Django管理中添加指向操作的链接

2024-06-03 00:21:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django admin中,我有一个打印按钮,它将信息发送到模板。我想添加到Action下拉链接,在那里我选中所需的条目并在Action下拉框中选择 Print。 但是当我添加一个链接到Aсtion下拉列表时,我得到了一个关于获取第三个参数的错误。我不明白这是第三个论点。在

管理员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

网址.py

^{pr2}$

模型.py

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

视图.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

你能帮我加个链接吗?在


Tags: pyobjreturnobjectsadmin链接modelsrequest
1条回答
网友
1楼 · 发布于 2024-06-03 00:21:08

我想你走错了方向。Actions只应该是一个文本,它将由django自动添加到下拉列表中。此处不支持HTML链接AFAIK。进一步:

First, we’ll need to write a function that gets called when the action is triggered from the admin. Action functions are just regular functions that take three arguments:

The current ModelAdmin An HttpRequest representing the current request, A QuerySet containing the set of objects selected by the user. Our publish-these-articles function won’t need the ModelAdmin or the request object, but we will use the queryset:

资料来源:

如果你的行动要有用,就必须

def button(self, request, queryset):

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

相关问题 更多 >