Reputation: 163
i use a queryset to obtain a user list from a city:
usuarios = Usuario.objects.filter(municipio=muni).exclude(user_id = ide)
so i get something like:
[Usuario: user1, Usuario: user2, Usuario: user3]
that is good but i need to do another queryset for obtain their devices
for usuario in usuarios:
devices = GCMDevice.objects.filter(user_id=usuario.user.id)
and i get only the last device from the last user(usuario):
[GCMDevice: samsung]
anybody know how can i obtain all devices from that users?
Upvotes: 4
Views: 22305
Reputation: 9359
There is more options. Put it into a dictionary with the user's id as a key:
for usuario in usuarios:
devices[usario.user.id] = GCMDevice.objects.filter(user_id=usuario.user.id)
but this is a bit demanding for the DB, as it is doing too many queries. So you can obtain all the DCMDevice
records via a single query:
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)
Upvotes: 7