Задать вопрос
@aitratata
Начинающий

Как правильно сделать запрос в django?

Для примера есть две модели Manager и Message.

class Manager(models.Model):
    name = models.CharField(max_length=255)
    create = models.DateTimeField(auto_now_add=True)


class Message(models.Model):
    text = models.TextField()
    manager = models.ForeignKey(Manager, models.SET_NULL, null=True)


Нужно вывести последних 5 созданных Manager и каждому из них принадлежащие сообщения.
Как это можно сделать что в шаблоне использовать один объект?
Или надо сначала во вьюхе получить Manager
Managers = Manager.objects.all().order_by('-create')[:5]

А потом с помощью цикла делать запрос
Messages = Enc.objects.filter(manager=Managers[i])
B как то пытаться соединить в один объект или список чтоб потом циклами вывести в шаблон.
Есть ли проще способ?
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vasilek-nik
Это конечно не по делу, но лучше все таки оформлять код с помощью тегов.
Переделайте модель сообщение следующим образом:
class Message(models.Model):
  text = models.TextField()
  manager = models.ForeignKey(Manager, models.SET_NULL, null=True, related_name="messages")

Применив миграцию вы сможете обращаться к сообщениям из модели менеджер. Например так:
somemanager=Manager.objects.first()
messages=somemanager.messages

Ну и далее выводить уже это в шаблон как вам нужно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы