Как подсчитать количество вложенных массивов в django?
Я новичок в django и все еще выясняю, как использовать все функции. Вот результат запроса, который я хочу подсчитать
{
"id": 1,
"user_id": 1,
"encountersDaily": [
{
"id": 1,
"DateTime": "2022-08-01T01:22:00Z",
"Longtitude": "14.536480570700000",
"Latitude": "121.049722723900000",
"EncounterExitID": 1,
"PromoterID": 1,
"GenderID": 1
},
{
"id": 10,
"DateTime": "2022-08-01T01:42:46Z",
"Longtitude": "14.536480570700000",
"Latitude": "121.049722723900000",
"EncounterExitID": 1,
"PromoterID": 1,
"GenderID": 1
}
],
},
{
"id": 4,
"user_id": 4,
"encountersDaily": [
{
"id": 6,
"DateTime": "2022-08-01T01:42:09Z",
"Longtitude": "14.536480570700000",
"Latitude": "121.049722723900000",
"EncounterExitID": 2,
"PromoterID": 4,
"GenderID": 1
},
{
"id": 8,
"DateTime": "2022-08-01T01:42:29Z",
"Longtitude": "14.536480570700000",
"Latitude": "121.049722723900000",
"EncounterExitID": 1,
"PromoterID": 4,
"GenderID": 1
},
{
"id": 9,
"DateTime": "2022-08-01T01:42:38Z",
"Longtitude": "14.536480570700000",
"Latitude": "121.049722723900000",
"EncounterExitID": 1,
"PromoterID": 4,
"GenderID": 2
}
],
}
У меня есть данные о 2 пользователях, и моя цель - пройти циклом по этому массиву и найти сумму encountersDaily
. возможно ли здесь просто использовать функцию filter
? или необходим цикл .
Из того, что я могу понять из приведенного вами кода. Ваш запрос должен быть примерно таким.
from django.db.models import Count
CountPromoter.objects.filter(
promotersGroup__GroupID=request.data.get('groupId')
).values(
"id", "user_id", "encountersDaily"
).annotate(
encountersDaily_count=Subquery(Count('encountersDaily')
)
Вы можете иметь count внутри подзапроса. Мне нужно больше информации о двух других моделях, чтобы написать более точный запрос. Да, и если у вас меньше полей в ответе запроса, попробуйте получить их в значениях или в value_set, а не получать весь ответ.