Как в передать в CBV форму из другой CBV?

Добрый день.
Есть очень простая модель:

Сlass News(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    article = RichTextField()


и еще одна:

class Comment(models.Model):
    text = models.TextField()
    news = models.ForeignKey(News)
    author = models.ForeignKey(User)
    pub_date = models.DateTimeField('Добавлено',auto_now_add=True)


News отдаю следующим образом:

class NewsDetailView(generic.DetailView):
    model = News
    template_name = 'news/detail.html'


Туда же нужно вставить форму добавления комментария из другого CBV например:

class AddCommentView(AjaxableResponseMixin,CreateView):
    model = Comment
    fields = ['text']

    def get_initial(self):
        news = get_object_or_404(News, slug=self.kwargs.get('slug'))
        return {
            'news': news, 'author': self.request.user,
        }


Как?)
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
@deliro
Создай форму (сейчас она динамически генерируется CreateView)

def get_initial(self):
    return {'news': self.get_object(), 'author': self.request.user}

def get_context_data(self, **kwargs):
    kwargs['form'] = CommentForm(self.request.POST, initial=self.get_initial())
    return super().get_context_data(**kwargs)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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