我最初只扩展了Group模型,尽管我让额外的字段正常工作,但当我切换回auth-user模型时,我最终得到了不一致的结果:
group1 = MyGroup(..)
user = group1.user_set.all()[0]
group2 = user.groups.all()[0]
group1 == group2 #(False!)
type(group1) #MyGroup..
type(group2) #Group..
我的下一个想法是扩展这两个auth。用户和身份验证。分组模型。
示例结构:
from django.contrib.auth.models import User As DjangoUser
from django.contrib.auth.models import Group As DjangoGroup
class MyGroup(DjangoGroup):
extra1 = models.CharField(..)
class MyUser(DjangoUser):
extra1 = models.CharField(..)
这可能吗?我看到一个错误报告说它在这里被修复了。然而,我没有看到实现这一点的正确方法的例子,也不清楚这部分是否是错误后修复所必需的:
manager = UserManager()
class MyUser(DjangoUser):
signature = forms.CharField()
post_count = forms.IntegerField()
objects = manager
_default_manager = manager
有这种行为的想法/例子吗?我试图在用户模型中重新定义"groups"链接,但这导致了验证错误。理想情况下,我希望能够运行上面的示例,并具有group1==group2和type(group2)==type(MyGroup())
您可以动态地向django用户/组模型添加一个新字段,这样就不会创建新的类类型。有关参考,请参见:http://code.google.com/p/comaie-django-groups/source/browse/trunk/src/comaie/django/groups/models.py?r=5
模型。ForeignKey(组null=True,blank=真,related_name='儿童',verbose_name=_("父"),help_text=_('组的父组。如果是根节点,则无。')).convente_to_class(组,'parent')def get_all_groups(self):""返回用户所属的所有组和这些组的所有父组小组。""direct_groups=self.groups.all()groups=集()对于direct_groups中的组:祖先=组.get_arcestors().all()对于祖先中的anc:groups.add(anc)groups.add(group)返回组setattr(用户,"get_all_groups",get_all_groups)