【问题标题】:How to use select_related如何使用 select_related
【发布时间】:2018-09-13 23:16:00
【问题描述】:

如何使用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 中运行打印语句后得到以下日志

Cannot resolve keyword 'user_first_name' into field. Choices are: address, address_id, attendance, basic,

【问题讨论】:

  • emp=Employee.objects.filter(pk=1).select_related('user').values('user__first_name','user__last_name','id') 需要使用双下划线访问相关模型字段。

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


【解决方案1】:

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

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

查询。

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

【讨论】:

    【解决方案2】:

    我们应该使用__ 来表示关系field

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

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 2016-01-18
      • 2011-10-01
      • 2020-12-24
      • 2015-02-02
      • 2014-11-15
      • 2021-12-29
      • 2021-11-07
      • 1970-01-01
      相关资源
      最近更新 更多