Задать вопрос
@Fedor_PV

Как совместить на одной странице CreateView и ListView?

Гуру Джанги, подскажите, плиз, новичку бестолковому по следующему вопросу -

Есть CreateView, он создает новое сообщение.
Есть ListView, он выводит список уже имеющихся сообщений.

А как сделать, чтобы как в любой переписке была возможность писать новое сообщение (CreateView), и при этом, на этой же странице, снизу была видна вся прошлая переписка (список всех ранних сообщений через ListView) ?
  • Вопрос задан
  • 641 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 2
@aerobelov
Недавно изучаю Django, могу быть неправ, но по-моему, нужно в get-части Create-view запросить те сообщения, которые нужны, и передать их в контексте в шаблон страницы, а там уж оформлять их как хочешь.
Ответ написан
netpastor
@netpastor
Python developer
А что мешает на странице с listview просто добавить форму, а обрабатывать ее в createview по другому урлу?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@FonVald
Backend Developer
Не так давно решал похожий вопрос. Как я понял решение сводиться к наследованию от FormMixin и ListView c предопределением метода post

Вот пример моей реализации но с использованием DetailView
class PartnerOrderView(FormMixin, DetailView):
    template_name = 'order-partner.html'
    form_class = PartnerBarcodeOrderForm
    model = Partner

    def post(self, request, *args, **kwargs):
        """ Обработка POST при использовани FormMixin в DetailView """
        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        form.save()
        return super().form_valid(form)
Ответ написан
Ваш ответ на вопрос

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

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