Найти - Пользователи
Полная версия: generic views и формы
Начало » Django » generic views и формы
1
S
Можно заставить generic views выводить на странице помимо информации о объекте ещё и форму, например через extra_context? На англицком пишут, что это можно реализоваться только вот так вот например: http://www.pythondiary.com/tutorials/django-13-generic-views-and-extra_context.html
Не брешут? “Из коробки” не работает?
fashust
Можно, и даже без extra_context, просто переопределить get_context_data, в нем уже можно добавлять в context все что угодно, это же CBV
S
Ещё такой вопрос.
Вот тут: http://habrahabr.ru/post/137960/#comment_4600992
есть код:
def form_valid(self, form):
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save() 
        return redirect(self.get_success_url())

Если используем обычную вьюшку, то request, понятное дело, в неё и передаётся.
А если используем CreateView из django.views.generic.edit то как добраться до request?
Вообще вьюшка вот такая, допустим:
class NewTopic(CreateView):
    form_class = NewTopicForm
    def form_valid(self, form):
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()
        return redirect(self.get_success_url())
Hayate
instance.user = self.request.user :D
о_О а у меня две учётки оказывается тут
FishHook
S
def form_valid(self, form):
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save() 
        return redirect(self.get_success_url())

def form_valid(self, form):
        form.instance.user=self.request.user
        return super(Class, self).form_valid(form)
S
Явно лучше, спасибо.
Кроме того, вариант с хабра ещё и редирект после отправки данных формы ломает.
S
FishHook
def form_valid(self, form):
        form.instance.user=self.request.user
        return super(Class, self).form_valid(form)

А ещё такой вопрос. Есть вот модели:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class ForumTopic(models.Model):
    TopicTitle = models.CharField(max_length=100)
    TopicPubDate = models.DateTimeField()
    def __unicode__(self):
        return '%s' % self.TopicTitle
class ForumPost(models.Model):
    PostTitle = models.CharField(max_length=100)
    PostText = models.TextField(max_length=10000)
    PostPubDate = models.DateTimeField()
    Topic = models.ForeignKey(ForumTopic)
    author = models.ForeignKey(User)
    def __unicode__(self):
        return '%s' % self.PostTitle
Как добраться через form.instance до других данных модели? Например до времени отправки сообщения? form.instance.PostPubDate?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB