0

我正在开发一个具有不同用户组的项目,并且用户组在网站上具有不同的权限。现在我希望能够在 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) 

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

4

2 回答 2

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.unregisterand admin.site.register,而不是像上面那样进行猴子修补。

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

于 2015-07-13T20:05:16.027 回答
0

您将模型字段添加到您ModelAdmin的不会产生任何影响。你应该做的是:

  • 将模型字段添加到Model某处
  • 创建一个ModelForm包含您需要的所有字段并自定义其在文档本示例save中描述的方法
  • 在文档中使用此表格,ModelAdmin如此处所示
于 2013-11-03T12:36:17.037 回答