Python 有没有一种方法可以自动将管理器方法或类级方法添加到Django中的管理页面?

Python 有没有一种方法可以自动将管理器方法或类级方法添加到Django中的管理页面?,python,django,django-models,django-admin,django-managers,Python,Django,Django Models,Django Admin,Django Managers,假设我有一个类人,它有一堆管理器方法和类级方法。我在管理页面中启用了Person,但我正在尝试找到一种方法,使所有这些管理器/类级别的方法也自动显示在管理页面上 class PersonManager(models.Manager): def get_status(self, *args, **kwargs): # code to get the status of selected persons class Person(models.Model): o

假设我有一个类人,它有一堆管理器方法和类级方法。我在管理页面中启用了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方法就会出现。或者可以在列出所有实例的管理页面中调用其中一个管理器方法,我可以选择希望在哪些实例上运行管理器方法。有这样的办法吗?我发现一篇文章手动演示了如何实现这一点,但我想知道是否有一个现有的解决方案/应用程序可以默认做到这一点

您可以通过在ModelAdmin中指定它们来添加到列表视图:

将其添加到细节视图需要更多的工作,但我发现这种方法通常是足够的

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"