django使用扩展的用户配置文件加入auth_user

时间:2014-02-25 10:23:10

标签: python mysql django

在Django 1.6中,我使用我自己的模型扩展了django用户模型,如

class Employee(models.Model):
   user        = models.ForeignKey(User, related_name='profile')
   adress      = models.CharField(max_length=500)
   department  = models.ForeignKey(Department)

class Department(models.Model):
   name    = models.CharField('Name', max_length=200)

我现在希望登录用户查看其数据,因此我需要显示表employee,department和auth_user中的所有相关信息。

通常我会用

    #employee = Employee.objects.select_related('department').select_related('user').get(user_id=request.user.id)

点击我想要的所有表格。但由于某种原因,如果我为我的查询选择Employee.objects,我只会获得与department表连接的employee表的信息,而不包含auth_user的信息。 我是否使用User.objects开始查询...它正好相反。我可以访问user_auth信息,但不能访问员工或部门信息。

我也在模型中尝试过OneToOne关系,但结果相同。我很确定,如果外键关系引用了django-tables,那么有一种简单的方法可以将app-tables连接起来。

为了完整性,employee.id和employee.user_id

之间的区别
   `id` int(11) NOT NULL AUTO_INCREMENT,
   CONSTRAINT `department_id` FOREIGN KEY (`department_id`) REFERENCES `polls_department` (`id`),
   CONSTRAINT `user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)

1 个答案:

答案 0 :(得分:0)

为什么不将Employee模型定义为django.contrib.auth.AbstractUserdocs here)的子类?您可以一次访问所有User相关字段以及您在Employee课程中定义的额外字段。