【问题标题】:How to modify group creation form in admin page如何在管理页面中修改组创建表单
【发布时间】:2013-11-03 03:43:33
【问题描述】:

我正在从事一个具有不同用户组的项目,并且用户组在网站上具有不同的权限。现在我希望能够在 django 管理组创建页面上创建这些用户组。我需要组创建页面有更多复选框或多对多表单,例如我可以为组分配的不同区域和功能。

我尝试过类似的方法,但它不起作用:

class GroupPermission(GroupAdmin):
    group = models.CharField(max_length=100)
    if not hasattr(Group, 'locations'):
        field = models.ForeignKey(Group,blank=True,null=True)
        field.contribute_to_class(Group, 'locations')
    annotations = models.TextField()
    show_all_annotations = models.BooleanField(default=False)
    location_group = models.CharField(max_length=100)
    show_all_locations = models.BooleanField(default=False)


class Meta:
    permissions = (
        ("show_us_map", "Allow user to view the US Map."),
        ("show_world_map", "Allow user to view the World Map."),
        ("show_europe_map", "Allow user to view the Europe Map."),
        ("allow_download_data", "Allow user to download data."),
    )
    def __unicode__(self):
    return self.group

admin.site.unregister(Group)
admin.site.register(Group, GroupPermission) 

有人有什么想法吗?或者有什么插件可以做到这一点?

【问题讨论】:

    标签: django permissions django-admin


    【解决方案1】:

    你可以这样做:

    from django.contrib.auth.admin import GroupAdmin
    from django.contrib.auth.models import Group
    
    Membership = Group.user_set.related.through
    
    class MembershipInline(admin.TabularInline):
        model = Membership
        extra = 1
    
    GroupAdmin.inlines = list(GroupAdmin.inlines) + [MembershipInline]
    

    更简洁的方法是创建自己的GroupAdmin,并使用admin.site.unregisteradmin.site.register,而不是上面的猴子补丁。

    另外,请注意,与 Django 提供的漂亮的多对多小部件相比,该界面相当粗糙,但它可以工作。

    【讨论】:

      【解决方案2】:

      您将模型字段添加到您的ModelAdmin,这将不起作用。你应该做的是:

      【讨论】:

      • 谢谢。但是如何添加模型字段?我继承了Group为MyGroup(Group),然后注销Group并注册MyGroup,出现错误说/admin/auth/group/add not found
      • 我没有扩展组模型的经验,但刚刚发现another answer 可能有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2015-09-20
      • 1970-01-01
      相关资源
      最近更新 更多