Django список запросов символов из связанной модели "многие-ко-многим" - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь получить список имен из модели, которая имеет отношение «многие ко многим» с моей пользовательской моделью. Вот модель

# models.py

class AvailableTime(models.Model):
    time = models.TimeField()

class CustomUser(models.Model):
    available_times = models.ManyToManyField('AvailableTime', blank=True)

Когда я выполняю подобный запрос, сервер возвращает следующий список клиенту

# views.py

doctor_list = User.objects.all().values('available_times__time')
return JsonResponse({'doctor_list': list(doctor_list}, status=200)

{
    "id": 30,
    "first_name": "Doctor",
    "last_name": "Test",
    "available_times__time": "9:00",
},
{
    "id": 30,
    "first_name": "Doctor",
    "last_name": "Test",
    "available_times__time": "9:00",
},

Есть ли способ вернуть список из available_times вместо возврата двух отдельных объектов?

Ниже приведен результат, который мне нужен

{
    "id": 30,
    "first_name": "Doctor",
    "last_name": "Test",
    "available_times__time": ["9:00", "9:30"]
}

1 Ответ

0 голосов
/ 13 июля 2020

Вероятно, вы не можете напрямую использовать queryset. Итак, вы можете попробовать для l oop:

result = list()
doctor_list = User.objects.all().prefetch_related('available_times')
for doctor in doctor_list:
   info = model_to_dict(doctor, fields=['id', 'first_name', 'last_name'])
   info['available_times'] = list(doctor.available_times.values_list('time',flat=True))
   result.append(info)
return JsonResponse({'doctor_list': result}, status=200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...