Reputation: 111
I'm filtering users in the admin, based on the info from this post: Filter django admin by logged in user My changelist is filtered as expected, only users from group "Group Name" have filtered views of the changelist, seeing only their events. The problem is when they try to edit their events, they make a change and get the feedback that their event was changed successfully in the admin, but the changes don't get saved. Can anyone tell me why? I would also like users that aren't in the group that's being filtered that have permission to edit events to be able to save changes as well. Changes were being saved before I started filtering ;)
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',)
}
Upvotes: 0
Views: 962
Reputation: 111
My conditional in save_model only saved if obj.user == None
Changing that fixed it.
def save_model(self, request, obj, form, change):
if obj.user == None:
obj.user = request.user
obj.save()
Upvotes: 1