Как сделать вложенный запрос в Django для выборки всех полей из связанной модели?
Допустим есть модель пост, в которой есть поле записи(это поле ManyToMany). При запросе Posts.objects.all().get(id=myid) я получаю объект поста с указным id. Но поле записи содержит только id записей, а мне надо, чтобы содержала все поля этой самой записи. Нашел в интернете методы QuerySet select_related и prefeth_related. Как я понял нужно использовать последний.
sim3x, В функции представления я хочу получить объект модели, который содержит в себе все вложенные поля. И отправляю это через HttpResponse в виде json. Мне нужно получить объект Meeting с определенным id. Поле persons должно содержать id,fio,user_post
class Meeting(models.Model):
year = models.IntegerField('Год')
number = models.IntegerField('Номер в году')
data = models.DateField('Дата проведения')
persons = models.ManyToManyField('mainapp.User', blank=True)
documents = models.ManyToManyField('mainapp.Document', blank=True)
questions = models.ManyToManyField('mainapp.Question', blank=True)
count_persons = models.IntegerField('Количество человек', blank=True, null=True)
…
class User(models.Model):
fio = models.CharField('ФИО', max_length=256)
user_post = models.CharField('Должность', max_length=256)
…
# Взять всех пользователей
persons = Meeting.objects.get(pk=1).persons.all()
# Взять конкретного
persons = Meeting.objects.get(pk=1).persons.get(pk=1)
# А дальше можете обращаться непосредственно к полям
persons.fio
А она содержит. Просто поле-дескриптор (та самая М2М связь) создаёт запрос только в случае обращения к этому полю (или явно вызывая prefetch_related). Задача-то собственно какая? Сериализовать данные и отдать их по API? Используй Django REST framework, он для этого создан.