это форма продукта? ты сохраняешь его два раза и еще впихиваешь с бизнес логику туда же)
дважды он не создается, этот класс наследуется от FormView и он ничего не знает о модели, чтобы что-то сохранить, поэтому я там явно и делаю Sale(продажа).objects.create... но пологаю должно быть иначе
в родительской модели тоже есть form.save() а сохранение формы во вьюхе возвращает тебе полученный инстанс, там уже можно так же sale сохранить
хм, ну а если form.save() вернул мне объект, там есть поля, которые были у формы. Но мне то помимо этих полей нужны еще другие, которые пользователь не заполнял, например мне нужно подтянуть цену товара, рассчитать ее умножив на то количество, которое выбрал пользователь, а потом уже на основе этого создать обьект и сохранить в бд
а в форме это все у тебя откуда? и почему нельзя так же это получить во вьюхе?
вот сейчас вот так, я создаю обьект Sale(продажа) на основе данных полученных из формы и данных, которые рассчитываю как бы сам (цену товара умноженную на кол-во), а мне проверяющий пишет "ModelFormMixin.form_valid там сделано по другому. Как думаете почему там реализовано иначе, а не self.mode.create(**form.cleaned_data)?"
так, а это точно метод формы, а не вьюхи?
это метод вьюхи ProductDetail(FormView)
я не понимаю почему вы сравниваете метод формы с методом вьюхи
Кажется, от тебя просто требует использовать Mixin и тонко намекают, что ты не там описал метод form_valid
хм, ну у меня вьюха наследуется от FormView, там есть метод form_valid
class Name(CustomMixin, FormView): pass
Вырезать и воткнуть в Mixin?
а куда именно, в тот же метод form_valid?
Если ты в школе по Django, то вероятно вы проходите логичное распределение кода. Всё должно быть на своих местах и всё такое
class CustomMixin: def form_valid(...): ... return super().form_valid(...) Типо такого вероятнее всего
так, давай нормально выложи код формы, модели и вьюхи на dpaste.org
https://dpaste.org/RzBB
ну, как минимум точно нужно сделать instance = product.save() ... return instance возможно речь об этом
Обсуждают сегодня