Найти тему
Движение-Жизнь

Django. Создание форм через ModelForm

Оглавление

Три или четыре раза пересматривал лекции по созданию форм в Django. Долго не мог приступить к реализации домашнего задания. То одно, то другое, то третье мешало сесть за уроки...

В общем, как-то так:

Задание 1. Создание продуктов

Что нужно сделать
Добавьте форму на основе ModelForm для создания продукта.
Напишите шаблон для создания продукта.
Добавьте view-функцию для создания продукта.
Реализуйте логику для создания продукта при помощи формы.

Ну тут всё просто - просто переписать код из лекции.

все запустилось и работает
все запустилось и работает

А вот с реализацией второго задания возникли трудности.

Задание 2. Создание заказов

Что нужно сделать
Добавьте форму на основе ModelForm для создания заказа.
Напишите шаблон для создания заказа.
Добавьте view-функцию для создания заказа.
Реализуйте логику для создания заказа при помощи формы.

Второе задание начал делать по аналогии с первым, всего-то надо поменять "Product" на "Order" там, где это надо. Написал код, запустил и....

По-идее тут должны быть другие поля, но что-то пошло не так, и мой подход "наскоком всех победить не сработал". Следовательно нужно подумать - как с помощью формы, создать новый заказ. Для понимания процесса зашел в "админку" Django. Открыл "Orders", там есть кнопочка "Add order" - нажал:

заполнил форму, нажал сохранить (Save)
заполнил форму, нажал сохранить (Save)

И вот у меня уже есть второй заказ в админке:

-4

Проверим как он отображается в order-list, всё хорошо, новый заказ появился:

-5

Итак, для реализации формы нам нужно четыре поля:

  • Delivery Addres (адрес доставки)
  • Promocode (промокод для скидки)
  • user (поле для выбора пользователя)
  • Products (поле выбора продуктов)

И все эти поля Django может спокойно сделать за нас, при том связаться с базой данных, выбрать из нее всё что требуется и создать то что надо!

Собственно говоря - я просто был слегка не внимателен... Делая это задание по аналогии с первым я просто не заметил одной важной детали:

Как только я поменял ProductForm() на OrderForm(), так всё и заработало, появились все поля которые я описал выше.

-7

Написал какой-то адрес, какой-то промокод, user - в данной базе данных только admin (с именем Евгений, в настройках), выбрал какие-то продукты и нажал "Create", вот собственно и результат этой работы:

-8

Две записи у меня уже были и вот, появилась третья! Все заработало можно работу отправлять куратору на проверку.

На истину не претендую, это моя реализация домашнего задания. Надеюсь кому-то это пригодится. Хотя надо до таких вещей доходить своим умом. Но иногда так трудно сдвинуться с мёртвой точки!

За лайк и спасибо в комментах буду более чем благодарен!