2017-04-25 78 views
0

我想管理Django管理中的對象,雖然我想只能編輯具有某個特定屬性的特定值的對象。正是我現在在admin.py:在Django管理對象中過濾對象

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

而我想只管理單位與type='SomeSpecificType'。我看到一些重寫SimpleListFilter類的東西,雖然我看不出這是如何適用的。

回答

2

你必須重寫德的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

你可以做

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"]