Django使用现有用户创建从User继承的对象

时间:2013-11-18 14:16:21

标签: django django-models django-users

我有模特:

class Lecturer(User):
    title = models.CharField(max_length=20)
    URL = models.URLField(null=True, blank=True)
    objects = UserManager()

def about(self):
    return u"%s %s %s" % (self.title, self.first_name, self.last_name)

def __unicode__(self):
    return u"%d %s %s %s" % (self.pk, self.first_name, self.last_name, self.title)

class Meta:
    db_table = 'lecturer'

现在,我想创建新的讲师,但使用现有的用户。 不幸的是,这不起作用:

    >>> u = User.objects.get(pk=2)
    >>> u
    <User: nick>
    >>> new = Lecturer(user_ptr_id=2, title='title', URL='url.com')
    >>> new.username
    u''

我尝试使用User对象而不是id,'pk'而不是'user_ptr_id',没有... 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

django.contrib.auth.User

延伸起来并不是一个好主意

您可以使用AUTH_USER_MODEL

设置custom authentication requirements

否则,您可能更容易在Lecturer和django的用户之间建立一对一的关系。这也在django documentation中描述。

总的想法是django.contrib.auth.User班级&#39;责任是提供身份验证功能。它并不意味着扩展了业务功能。如果您需要这种功能,那么创建另一个具有一对一引用django.contrib.auth.User的类的层次结构可能会更好