Данните не се запазват при използване на CreateView и ListView на един и същи URL адрес

Имам следния 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

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