170 похожих чатов

Мне указали на ошибку: "ModelFormMixin.form_valid там сделано по другому. Как

думаете почему там реализовано иначе, а не self.model.create(**form.cleaned_data)?"

но я что-то не могу понять, как сделано в ModelFormMixin.form_valid и как должен сделать я...

22 ответов

19 просмотров

это форма продукта? ты сохраняешь его два раза и еще впихиваешь с бизнес логику туда же)

Микита-Хмель Автор вопроса

дважды он не создается, этот класс наследуется от FormView и он ничего не знает о модели, чтобы что-то сохранить, поэтому я там явно и делаю Sale(продажа).objects.create... но пологаю должно быть иначе

в родительской модели тоже есть form.save() а сохранение формы во вьюхе возвращает тебе полученный инстанс, там уже можно так же sale сохранить

Микита-Хмель Автор вопроса

хм, ну а если form.save() вернул мне объект, там есть поля, которые были у формы. Но мне то помимо этих полей нужны еще другие, которые пользователь не заполнял, например мне нужно подтянуть цену товара, рассчитать ее умножив на то количество, которое выбрал пользователь, а потом уже на основе этого создать обьект и сохранить в бд

а в форме это все у тебя откуда? и почему нельзя так же это получить во вьюхе?

Микита-Хмель Автор вопроса

вот сейчас вот так, я создаю обьект Sale(продажа) на основе данных полученных из формы и данных, которые рассчитываю как бы сам (цену товара умноженную на кол-во), а мне проверяющий пишет "ModelFormMixin.form_valid там сделано по другому. Как думаете почему там реализовано иначе, а не self.mode.create(**form.cleaned_data)?"

так, а это точно метод формы, а не вьюхи?

Микита-Хмель Автор вопроса

это метод вьюхи ProductDetail(FormView)

Микита-Хмель Автор вопроса

а вот как-то так по его мнению должно быть (это из ModelFormMixin, который он в пример приводит)

я не понимаю почему вы сравниваете метод формы с методом вьюхи

Кажется, от тебя просто требует использовать 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 возможно речь об этом

Микита-Хмель Автор вопроса

типо так?

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта