以下内容为原创,转载请注明出处!

1:get_queryset(self, request):

  可获去本对象的queryset,及数据集合,可通过此方法来过滤想要的数据如:

def get_queryset(self, request):
        qs = super(GloryAdmin, self).get_queryset(request)
        user = request.user
        if qs and hasattr(user, "userbase"):
            return qs.filter(creator__id = user.id)
        return qs

2:save_model(self, request, obj, form, change):

 可在后台添加数据保存的时候做相应操作,一看就知道是重写save方法,如:

def save_model(self, request, obj, form, change):
        user = request.user
        if obj and hasattr(user, "userbase"):
            obj.creator_id = user.id
            obj.save()

3:formfield_for_manytomany,formfield_for_foreignkey,formfield_for_choice_field(self, db_field, request, **kwargs):

  参数都是一样的,在后台admin页面可通过此方法来过滤等操作一个字段的数据,者三个区别就是该字段的类型是manytomany,foreignkey和普通字段,如:

def formfield_for_manytomany(self, db_field, request, **kwargs):
        user = request.user
        if db_field.name == "photo":
            kwargs["queryset"] = Photo.objects.filter(creator__id = user.id)
        return super(GloryAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

4:get_form(self, request, obj=None, **kwargs)

 可实现根据不同权限来过滤,或者查看视图等,如:

 def get_form(self, request, obj=None, **kwargs):
        self.exclude = ['log_id','fans_id','presenter_id']
        if not request.user.is_superuser:
            self.exclude.append('transactionid')
        return super(NewAdmin, self).get_form(request, obj, **kwargs)