让我们说我有一个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/
答案 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"
将其添加到详细视图需要更多工作,但我发现此方法通常已足够。