扩展Django中的Auth-User和Group模型



我最初只扩展了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)

最新更新