Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2012 10:35:39

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

generic views и формы

Можно заставить generic views выводить на странице помимо информации о объекте ещё и форму, например через extra_context? На англицком пишут, что это можно реализоваться только вот так вот например: http://www.pythondiary.com/tutorials/django-13-generic-views-and-extra_context.html
Не брешут? “Из коробки” не работает?

Отредактировано S (Сен. 29, 2012 10:36:16)

Офлайн

#2 Сен. 29, 2012 11:01:39

fashust
От:
Зарегистрирован: 2011-07-17
Сообщения: 30
Репутация: +  3  -
Профиль   Отправить e-mail  

generic views и формы

Можно, и даже без extra_context, просто переопределить get_context_data, в нем уже можно добавлять в context все что угодно, это же CBV



import this

Офлайн

#3 Окт. 5, 2012 08:37:02

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

generic views и формы

Ещё такой вопрос.
Вот тут: 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())

Офлайн

#4 Окт. 5, 2012 08:56:14

Hayate
От:
Зарегистрирован: 2010-10-15
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

generic views и формы

instance.user = self.request.user :D
о_О а у меня две учётки оказывается тут



Офлайн

#5 Окт. 5, 2012 09:51:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

generic views и формы

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)



Офлайн

#6 Окт. 5, 2012 13:01:04

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

generic views и формы

Явно лучше, спасибо.
Кроме того, вариант с хабра ещё и редирект после отправки данных формы ломает.

Офлайн

#7 Окт. 14, 2012 17:36:49

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

generic views и формы

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?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version