以下内容为原创,转载请注明出处!
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)