【问题标题】:Django Admin filter changelist by userDjango Admin按用户过滤更改列表
【发布时间】:2014-09-24 08:11:31
【问题描述】:

我正在根据帖子中的信息在管理员中过滤用户: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',)
        }

【问题讨论】:

    标签: django permissions django-admin


    【解决方案1】:

    我在 save_model 中的条件仅在 obj.user == None 更改后才保存。

    def save_model(self, request, obj, form, change):
        if obj.user == None:
                obj.user = request.user
            obj.save()
    

    【讨论】:

      猜你喜欢
      • 2012-03-23
      • 1970-01-01
      • 2010-10-27
      • 2011-10-14
      • 2010-12-09
      • 2012-05-11
      • 2020-03-08
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多