如何使用“创建视图”,是否可以避免依赖下拉列表?

时间:2019-01-30 03:30:25

标签: django django-forms django-views django-queryset

我从事这个项目已经有一段时间了,并且从零开始学习了除HTML和CSS之外的所有内容。但是,我在不同场合遇到了麻烦,并在这里得到了很多帮助。这次,我想知道我需要使用哪种查询才能获得所需的结果。

目标是使用CreateView在其他模板上使用我拥有的表单来查看我的结果。我有两个ModelForm,两个都是ModelChoiceField,除了第一个是ModelMultipleChoiceField

我将forms.py放在这里,不确定我是否正确定义了save函数。

from django import forms
from betterforms.multiform import MultiModelForm
from .models import Topic, Image, Question, Answer

class TopicForm(forms.ModelForm):
    topic_name  =   forms.ModelMultipleChoiceField(
                    queryset    =   Topic.objects.all(),
                    widget      =   forms.SelectMultiple(
                    attrs       =   {'class': ''}
                    ))
    class Meta:
        model   =   Topic
        fields  =   ['topic_name',]

class QuestionForm(forms.ModelForm):
    topic_name  =   forms.ModelChoiceField(
                    queryset    =   Topic.objects.all(),
                    widget      =   forms.Select(
                    attrs       =   {'class': ''}
                    ))
    class Meta:
        model   =   Question
        fields  =   ['questions_type',]
class QuizMultiForm(MultiModelForm):
    form_classes    =   {
                'topics'    :   TopicForm,
                'questions' :   QuestionForm
    }
    def save(self, commit=True):
        objects = super(QuizMultiForm, self).save(commit=False)

        if commit:
            topics = objects['topics']
            topics.save()
            questions = objects['quesitons']
            questions.topics = objects['questions']
        return objects

这是我的views.py,我尚未定义任何get_queryset,因为我不知道它的工作方式。我知道我应该写类似的东西。 Topic.objects.all()Question.filter(question_topic = F(Topic.pk))

from django.shortcuts import render, render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from django.views.generic import *
from django.views.generic.edit import *
from home.models import Topic, Image, Question, Answer
from home.forms import QuizMultiForm

class QuizView(CreateView):
    form_classes    =   QuizMultiForm
    template_name   =   'index.html'
    success_url     =   '/thanks/'
    def get_queryset(arg):
        Topic.objects

谢谢

0 个答案:

没有答案