如何使用select_related

时间:2018-04-04 11:48:05

标签: django python-3.x django-queryset

如何使用select_related获取下面员工类的名字和姓氏。

class Employee(models.Model):
    """
    Model, which holds general information of an employee.

    """
    user = models.OneToOneField(User, related_name='users',
                                on_delete=models.CASCADE, unique=True)
    photo_logo = models.FileField(null=True, blank=True)

以下是我实施查询的方式

emp=Employee.objects.filter(pk=1).select_related('user').values('user_first_name','user_last_name','id')

但是在django shell

中运行print语句后,我得到以下日志
Cannot resolve keyword 'user_first_name' into field. Choices are: address, address_id, attendance, basic,

2 个答案:

答案 0 :(得分:3)

由于您需要特定的用户模型字段,在这种情况下您不需要select_related,只需使用:

emp=Employee.objects.filter(pk=1).values('user__first_name','user__last_name','id')

查询。

请注意,您应该使用双下划线__来执行连接。

答案 1 :(得分:1)

我们应该将__用于关系field

emp=Employee.objects.filter(pk=1).select_related(
     'user'
).values('user__first_name','user__last_name','id')