【发布时间】:2012-08-21 22:48:22
【问题描述】:
我最初只扩展了 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.User 和 auth.Group 模型。
示例结构:
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(..)
这可能吗? I saw a bug-report stating it was fixed here. 但是我没有看到实现这一点的正确方法的示例,也不清楚这部分是否需要在错误修复后:
manager = UserManager()
class MyUser(DjangoUser):
signature = forms.CharField()
post_count = forms.IntegerField()
objects = manager
_default_manager = manager
这种行为有什么想法/例子吗?我试图在用户模型中重新定义“组”链接,但这导致了验证错误。理想情况下,我希望能够运行上面的示例并拥有 group1 == group2 和 type(group2) == type(MyGroup())
【问题讨论】:
标签: django django-models extending-classes