【问题标题】:Filtering objects in django admin在 django admin 中过滤对象
【发布时间】:2017-04-25 19:59:15
【问题描述】:

我想在 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 类的东西,虽然我看不出它是如何应用在这里的。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    您必须覆盖 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')
    

    【讨论】:

      【解决方案2】:

      你可以的

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

      【讨论】:

        猜你喜欢
        • 2010-11-16
        • 2012-10-18
        • 2011-01-07
        • 2014-01-30
        • 2020-07-09
        • 2012-06-29
        • 1970-01-01
        • 2010-09-15
        • 2011-09-28
        相关资源
        最近更新 更多