在django admin中过滤对象

时间:2017-04-25 19:59:16

标签: python django django-admin

我想在django admin中管理对象,但我希望只能编辑具有某个属性的特定值的对象。我现在正好在admin.py:

class UnitAdmin(admin.ModelAdmin):
    list_display = ('type', 'name', 'result_file')
    list_filter = ['type']
admin.site.register(Unit, UnitAdmin)

我想只管理type='SomeSpecificType'的单位。我看到覆盖SimpleListFilter类的东西,虽然我不知道这在这里是如何适用的。

2 个答案:

答案 0 :(得分:2)

您必须覆盖de modelAdmin中的get_queryset并过滤具有type='SomeSpecificType的对象。

class UnitAdmin(admin.ModelAdmin):
    ...

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

答案 1 :(得分:1)

你可以做到

class UnitAdmin(admin.ModelAdmin):
    list_display = ('type', 'name', 'result_file')
    list_filter = ['type']

    def get_readonly_fields(self, request, obj=None):
        if obj and obj.type == 'SomeSpecificType':
            return []
        return ["type", "name", "result_file"]