Форум сайта python.su
Часть метода во вью
comments = post.comments.filter(active=True) if request.method == 'POST': comment_form = CommentForm(data=request.POST) if comment_form.is_valid(): new_comment = comment_form.save(commit=False) new_comment.post = post new_comment.save(); else: comment_form = CommentForm() return render(request, 'blog/post/detail.html', {'post': post, 'comments': comments, 'comment_form': comment_form})
{% if new_comment %} <p>You comment has bin add</p> {% else %} <h2>Add new comment</h2> <form action="." method="post"> {{ comment_form.as_p }} {% csrf_token %} <p><input type="submit" value="Add comment"></p> </form> {% endif %}
Отредактировано eth (Март 13, 2016 21:15:27)
Офлайн
ethВот так:
Как сюда попадает new_comment если его нет в кортеже возвращаемых значений?
ethДанные, введенные в форму, передаются через класс формы.
CommentForm(data=request.POST)
Офлайн
Я что-то вообще запутлася сейчас, ну класс формы присваивается comment_form = CommentForm(data=request.POST), а new_comment то никак не присваивается comment_form? Она же просто в ифе создается и там остается?
Офлайн
Я в Django не силен, но во Flask я бы ответил так:
if request.method == 'POST':
ethВ класс передаются значения из формы, а не просто присваивается класс
ну класс формы присваивается
ethКак это? А вот это что?
new_comment то никак не присваивается comment_form
new_comment = comment_form.save(commit=False)
Отредактировано Razor (Март 15, 2016 14:37:57)
Офлайн
Как это? А вот это что?Я просто что-то фигово понимаю динамическую типизацию, в new_comment будет булевый результат метода comment_form.save(commit=False) ? Откуда там вся модель формы?
new_comment = comment_form.save(commit=False)
Это я уже что-то запутался. То ли вы меня не понимаете, то ли мы говорим о разном.
Офлайн
ethА чего вы взяли, что результат булевый? Посмотрите в код метода, он же доступен.
будет булевый результат метода
def save(self, commit=True): """ Save this form's self.instance object if commit=True. Otherwise, add a save_m2m() method to the form which can be called after the instance is saved manually at a later time. Return the model instance. """ if self.errors: raise ValueError( "The %s could not be %s because the data didn't validate." % ( self.instance._meta.object_name, 'created' if self.instance._state.adding else 'changed', ) ) if commit: # If committing, save the instance and the m2m data immediately. self.instance.save() self._save_m2m() else: # If not committing, add a method to the form to allow deferred # saving of m2m data. self.save_m2m = self._save_m2m return self.instance
Офлайн
FishHook
О майгад, мой фейл согласен, но как-бы чисто интуитивно там булевый тип ждешь. self.instance это this?
Офлайн
ethкакой еще this, Господь с вами!
self.instance это this?
Офлайн
FishHookНу екземпляр модели для формы, не?
какой еще this, Господь с вами!
Офлайн
ethЭто экземпляр модели для формы, но при чем тут this? Дай угадаю - JavaScript ваш первый и единственный известный язык программирования?
Ну екземпляр модели для формы, не?
Офлайн