我根据此帖子中的信息过滤了管理员中的用户:Filter django admin by logged in user 我的更改列表按预期进行过滤,只有来自“组名”组的用户才能过滤更改列表的视图,只查看其事件。问题是,当他们尝试编辑他们的事件时,他们会进行更改并获得他们的事件在管理员中成功更改的反馈,但更改不会得到保存。谁能告诉我为什么?我还希望那些没有被过滤的组中有权编辑事件的用户也可以保存更改。在我开始过滤之前,保存了更改;)
class FilterUserAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if obj.user == None:
obj.user = request.user
obj.save()
def queryset(self, request):
qs = super(FilterUserAdmin, self).queryset(request)
if request.user.groups.filter(name__in=['Group Name',]):
return qs.filter(user=request.user)
else:
return qs
def has_change_permission(self, request, obj=None):
if not obj:
return True
return obj.user == request.user
class EventAdmin(FilterUserAdmin):
readonly_fields = ('user',)
list_filter = ('film', 'producing_partner',)
list_display = ('id', 'producing_partner', 'film', 'date_time', 'venue_name', 'city',)
class Media:
js = ('tiny_mce/tiny_mce.js', 'tiny_mce/textareas.js',)
css = {
'all': ('css/admin-mods.css',)
}
答案 0 :(得分:1)
我在save_model中的条件只保存obj.user == None
更改修复它。
def save_model(self, request, obj, form, change):
if obj.user == None:
obj.user = request.user
obj.save()