【发布时间】:2014-08-20 07:00:19
【问题描述】:
我想在django admin 中创建一个具有自定义组的用户。
所以我写了下面的代码:
from django.contrib.auth.models import User as AuthUser
from django.contrib.auth.models import Group
# these groups have already been created.
class TestGroup(object):
Admin = 'Admin'
Merchant = 'Merchant'
User = 'User'
class Merchant(AuthUser):
def save(self, **kwargs):
super(Merchant, self).save(**kwargs)
for group in Group.objects.all():
print group.name
# way 1
if not self.groups.filter(name=TestGroup.Merchant).exists():
print self.groups.filter(name='Merchant').exists()
g = Group.objects.get(name=TestGroup.Merchant)
g.user_set.add(self)
print self.groups.filter(name='Merchant').exists()
# way 2
if not self.groups.filter(name=TestGroup.Merchant).exists():
g = Group.objects.get(name=TestGroup.Merchant)
self.groups.add(g)
# way 3
if not self.groups.filter(name=TestGroup.Merchant).exists():
g = Group.objects.get(name=TestGroup.Merchant)
self.groups.add(g)
self.save()
我已经尝试了三种向用户添加组的方法。但是它们都不起作用。
更新:
您可以按照以下步骤进行测试:
在 django admin 中创建一个名为“Merchant”的组
添加我的代码(在方式1中添加打印以测试),
syncdb等等。-
在 django 管理员处创建一个
Merchant。 你可以看到日志:u'Merchant'FalseTrue 输入刚才创建的商户,可以看到,组商户没有被选中(表示这个用户没有超出这个组)。
-
再次点击保存, 你仍然会看到
u'Merchant'FalseTrue
加群到商户失败,很奇怪。
【问题讨论】:
-
它是否可能与 django 自己的 Group 模型混淆了,User 模型已经与之共享关系?
-
@cms_mgr 在发布此问题之前,我从自定义
XXXGroup中删除了公司名称XXX。我已经更新了我的问题。 -
如果发布的代码现在是准确的,那么您的
TestGroup模型没有外键关系。您已经创建了三个变量:Admin、Merchant和User,并为这些变量分配了同名的字符串。 -
@cms_mgr TestGroup 仅用于定义组名。具有这些名称的组已在项目启动时创建。
标签: python django python-2.7 django-admin