Я построил эту модель и хотел бы, чтобы ее формы были на одной странице с использованием MultiModelForm, но я получаю это сообщение об ошибке:
ModuleNotFoundError: Нет модуля с именем 'bestforms'
from django.db import models
from home.choices import *
# Create your models here.
class Topic(models.Model):
topic_name = models.IntegerField(
choices = question_topic_name_choices, default = 1)
def __unicode(self):
return u'%s' % self.topic_name
class Image (models.Model):
image_file = models.ImageField()
def __unicode(self):
return u'%s' % self.image_file
class Question(models.Model):
questions_type = models. IntegerField(
choices = questions_type_choices, default = 1)
question_topic = models.ForeignKey( 'Topic',
on_delete=models.CASCADE,
blank=True,
null=True)
question_description = models.TextField()
question_answer = models.ForeignKey( 'Answer',
on_delete=models.CASCADE,
blank=True,
null=True)
question_image = models.ForeignKey( 'Image',
on_delete=models.CASCADE,
blank=True,
null=True)
def __unicode(self):
return u'%s' % self.question_description
class Answer(models.Model):
answer_description = models.TextField()
answer_image = models.ForeignKey( 'Image',
on_delete=models.CASCADE,
blank=True,
null=True)
def __unicode(self):
return u'%s' % self.answer_description
Это Forms.py
from django import forms
from .models import Topic, Image, Question, Answer
from betterforms.multiform import MultiModelForm
class TopicForm(forms.ModelForm):
topic_name = forms.ModelMultipleChoiceField(
queryset = Topic.objects.all(),
widget = form.SelectMultiple(
attrs = {'class': ''}
))
class Meta:
model = models.Topic
fields = ['topic_name']
class QuestionForm(forms.ModelForm):
topic_name = forms.ModelChoiceField(
queryset = Topic.objects.all(),
widget = form.Select(
attrs = {'class': ''}
))
class Meta:
model = models.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
from django.shortcuts import render, render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from .models import Topic, Image, Question, Answer
from home.forms import QuizMultiForm
from django.views.generic import CreateView
class QuizView(CreateView):
form_classes = QuizMultiForm
template_name = 'index.html'
Я не нашел решений на этом сайте об этой проблеме.
Я хотел бы использовать виджет RadioSelect
, чтобы показать мои вопросы или нет на той же странице.Но я не знаю, как создать такую вещь.Я был бы рад, если бы вы помогли и с этим.