【问题标题】:How to perform a queryset in Django with a loop for in如何在 Django 中使用 for in 循环执行查询集
【发布时间】:2016-01-16 18:31:33
【问题描述】:

我使用查询集从城市获取用户列表:

usuarios = Usuario.objects.filter(municipio=muni).exclude(user_id = ide)

所以我得到类似的东西:

[Usuario:user1,Usuario:user2,Usuario:user3]

这很好,但我需要做另一个查询集来获取他们的设备

for usuario in usuarios:
    devices = GCMDevice.objects.filter(user_id=usuario.user.id)

我只从最后一个用户(usuario)那里得到最后一个设备:

[GCMDevice:三星]

有人知道我如何从该用户那里获得所有设备吗?

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

    还有更多选择。 将其放入以用户 id 为键的字典中:

    for usuario in usuarios:
        devices[usario.user.id] = GCMDevice.objects.filter(user_id=usuario.user.id)
    

    但这对数据库来说有点苛刻,因为它执行了太多查询。因此,您可以通过单个查询获得所有DCMDevice 记录:

    user_ids = Usuario.objects.filter(municipio=muni).exclude(user_id=ide).values_list('user_id', flat=True)
    devices = GCMDevice.objects.filter(user_id__in=user_ids)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      相关资源
      最近更新 更多