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

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

вид.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

person thebot    schedule 08.06.2018    source источник
comment
Что вы имеете в виду под тем же URL? Для любого URL может быть вызвано только одно представление.   -  person Daniel Roseman    schedule 09.06.2018


Ответы (1)


Данные не могут быть сохранены автоматически, поскольку 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})
person Lemayzeur    schedule 08.06.2018