我正在开发一个具有不同用户组的项目,并且用户组在网站上拥有不同的权限。现在我希望能够在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)
有没有人有任何想法?或者有没有可以做到这一点的插件?
答案 0 :(得分: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.unregister
和admin.site.register
,而不是如上所述进行猴子修补。
另外,请注意,与Django提供的漂亮的多对多小部件相比,界面相当粗糙,但它可以工作。
答案 1 :(得分:0)
您将模型字段添加到ModelAdmin
,这将无效。你应该做的是:
Model
ModelForm
,其中包含您需要的所有字段,并自定义here in the docs和in this example save
方法
ModelAdmin
中使用此表单,如here in the docs