如何在admin中过滤对象?

时间:2017-03-12 23:27:56

标签: python django wagtail

  

我如何过滤每个wagtail管理页面中显示的对象   模型?   在django中,这个问题可以通过重写Admin类的模型来解决,但我不知道它是如何可能的。

1 个答案:

答案 0 :(得分:1)

假设您在谈论非页面对象,您可以通过两种方式在管理界面中公开它们:snippetsModelAdmin

后者与Django的ModelAdmin非常相似(但不是相同的),你应该能够覆盖get_queryset来过滤像你习惯使用的Django一样的对象。 / p>

例如,在正确设置ModelAdmin应用后,您可以执行以下操作:

# models.py
class Person(django.db.models.Model):
  type = django.db.models.CharField(max_length=20, choices=(('student', 'Student'), ('teacher', 'Teacher')))
  # ...

# wagtail_hooks.py
class StudentAdmin(wagtail.contrib.modeladmin.options.ModelAdmin):
  model = my_app.models.Person

  def get_queryset(self, request):
    qs = super(StudentAdmin, self).get_queryset(request)
    return qs.filter(type='student')

wagtail.contrib.modeladmin.options.modeladmin_register(MyPageModelAdmin)