Задать вопрос

Зачем form_valid заканчивать super() или как передать параметры из одной формы в другую связную с ней форму модели?

Простой пример из django_tutorial:
class AuthorCreate(CreateView):
    model = Author
    fields = ['name']

    def form_valid(self, form):
            form.instance.created_by = self.request.user
            return super(AuthorCreate, self).form_valid(form)

С Супер и линеаризацией разобрался, но не разобрался походу с тем, что должны возвращать функции...
Так, вот, что в данном случае функция возвращает? Как по мне это вызов этой же функции, но это кажется мне непонятным...
_________________________________________________________________________________________________________________
И сразу еще вопрос, можно ли закончить это так, что бы передать id сохраненного поля формы далее ( в данном случае это будет поле question_text), на следующую страницу с формой для создания и привязывания по этому id списка вопроссов?) Как вытащить с формы id сохраненной модели?

models:
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField(default=datetime.datetime.now())

class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)


view:
class QuestionCreate(LoginRequiredMixin, CreateView):
    template_name = "polls/create_question.html"
    model = Question
    fields = ['question_text']
    #success_url = reverse_lazy('create_choices')
    
    def form_invalid(self, form):
        pass

    def form_valid(self, form):
        # Код сохраннеия модели 
        # Какой-то return
#или нижнюю функцию тоже сделать классом и наследовать от CreateView?
def create_choices(request, question_id):
        form = ChoiceForm()
        try:
            question = Question.objects.get(pk = question_id)
        except Question.DoesNotExist:
            raise Http404
        return render(request, "polls/create_choices.html", {"form": form, "question": question})


urls:
url(r'create/$', views.QuestionCreate.as_view(), name='create_question'),
    url(r'create/(?P<question_id>\d+)/$', views.create_choices, name='create_choices'),

forms.py
class QuestionForm(forms.ModelForm):
    class Meta:
        model = Question
        fields = ('question_text',)
        extra = 1


class ChoiceForm(forms.ModelForm):
    class Meta:
        model = Choice
        fields = ('choice_text',)
        extra = 6
#В темплейте 6 полей choice_text не выводит, только одно, с формой явно что то не так

В результате первая форма должна сохранять название вопросса, и с этим вопроссом идти на вторую форму с добавлением вариантов ответов и при заполнении добавить связаный id в таблицу Choice и варианты ответов... c formset не разобрался, решил так попробовать, а потом сделать все в аяксе на одной странице(это же возможно?_)
  • Вопрос задан
  • 238 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
koshalex
@koshalex Автор вопроса
Хотяб на первый вопрос ответьте пожалуйста )
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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