Данные не сохраняются при использовании CreateView и ListView по одному и тому же URL - PullRequest
0 голосов
/ 09 июня 2018

У меня есть следующий view.py.Цель - показать форму CreateView для каждого элемента ListView по одному и тому же URL.Теперь текстовая область отображается, но отправка формы не сохраняет данные.Буду очень признателен за любую помощь.

view.py:

class CreatePost(CreateView):
    class PostForm(ModelForm):
        class Meta:
            model = Post
            fields = ['post'] 
            widgets = {
            'post': forms.Textarea()
            }

class TheList(ListView):
    model = Item
    template_name='item/items.html'

    def get_context_data(self, **kwargs):
        context = super(TheList, self).get_context_data(**kwargs)
        context['form'] = CreatePost.PostForm
        return context

1 Ответ

0 голосов
/ 09 июня 2018

Данные не могут быть сохранены автоматически, поскольку ListView не предназначено для этого.Вы просто используете context_data для отправки формы.Однако ListView имеет метод post() и get(), вы можете получить данные, отправленные в post или get в зависимости от метода запроса.

def post(self, request, *args, **kwargs):
    form  = CreatePost.PostForm(request.POST)
    if form.is_valid():
        form.save()
    return render(request, self.template_name, {'form': form})
...