0

我正在使用 LDAP 身份验证模块登录我的 django 应用程序。这可以很好地登录,但我在使用以下功能时遇到问题:

request.user.is_authenticated():

这在我的开发机器上工作正常(也使用 ldap),但在生产中不会返回与用户关联的信息。特别是,我正在检索一组基于用户主键的事件。

eventList = Event.objects.filter(employee_id = request.user.pk)

事件存在(它们在另一个视图中呈现),我很确定这是一个声明。值得注意的是,虽然我已经将 User 分类如下,但是创建了员工(我已经在管理界面中检查过):

class Employee(models.Model):
    # This field is required.
    user = models.OneToOneField(User)
    manager_id = models.ForeignKey('self', related_name = 'employees', null = True)

    def __unicode__(self):
     return self.user.username

def create_user_profile(sender, **kwargs):
    """When creating a new user, make an employee profile too."""
    u = kwargs["instance"]
    if not Employee.objects.filter(user = u):
        Employee(user=u).save()

post_save.connect(create_user_profile, sender = User)

有人可以帮忙吗?

4

1 回答 1

0

这取决于我的查询。基本上,原始查询假设每个 Employee 和 User 对象具有相同的 PK。这在开发中是可以的,但在生产中不起作用,因为键不匹配。

将原始查询替换为以下解决的问题:

    employee = request.user.employee
    eventList = Event.objects.filter(employee_id = employee.pk)
于 2013-02-26T16:57:13.600 回答