有没有办法自动将管理器方法或类级方法添加到Django的管理页面?

时间:2015-03-09 12:52:06

标签: python django django-models django-admin django-managers

让我们说我有一个Person类,它有一堆管理器方法和类级方法。我在管理页面中启用了Person,但我试图找到一种方法,以便所有这些管理器/类级别方法也自动显示在管理页面上。

class PersonManager(models.Manager):

    def get_status(self, *args, **kwargs):
        # code to get the status of selected persons


class Person(models.Model):
    objects = PersonManager()
    name = models.CharField(max_length=100)

    def email_person(self, email):
        #code to email the specific person

因此,例如,当我在选择实例后转到管理页面上的详细视图时,将显示email_person方法。或者可以在管理员页面中调用其中一个管理器方法,列出所有实例,我可以选择要运行管理器方法的实例。有这样的方式吗?我发现了一篇文章,手动显示了如何操作,但我想知道是否有一个现有的解决方案/应用程序默认执行此操作? http://patrick.arminio.info/additional-admin-views/

1 个答案:

答案 0 :(得分:0)

您可以在ModelAdmin中指定admin actions,将{{3}}添加到列表视图中:

class PersonAdmin(admin.ModelAdmin):
    actions = ['some_action']

    def some_action(self, queryset, request):
        queryset.some_action()
    some_action.short_description = "Do some action on selected persons"

将其添加到详细视图需要更多工作,但我发现此方法通常已足够。