как создавать динамически сгенерированные формы с отношениями один-ко-многим в Django - PullRequest
0 голосов
/ 26 июня 2010

Я пытаюсь написать систему викторин для изучения django, где пользователи могут добавлять тесты в систему. мои модели выглядят как

from google.appengine.ext import db

class Quiz(db.Model):
 title=db.StringProperty(required=True)
 created_by=db.UserProperty()
 date_created=db.DateTimeProperty(auto_now_add=True)


class Question(db.Model):
 question=db.StringProperty(required=True)
 answer_1=db.StringProperty(required=True)
 answer_2=db.StringProperty(required=True)
 answer_3=db.StringProperty(required=True)
 correct_answer=db.StringProperty(choices=['1','2','3','4'])
 quiz=db.ReferenceProperty(Quiz)

Мой вопрос: как создать форму + представления + шаблоны, чтобы предоставить пользователю страницу для создания тестов? до сих пор я придумал это. Просмотров:

from google.appengine.ext.db.djangoforms import ModelForm
from django.shortcuts import render_to_response
from models import Question,Quiz
from django.newforms import Form 



def create_quiz(request):

 return render_to_response('index.html',{'xquestion':QuestionForm(),'xquiz':QuizForm()})

class QuestionForm(ModelForm):
 class Meta:
  model=Question
  exclude=['quiz']

class QuizForm(ModelForm):
 class Meta:
  model=Quiz
  exclude=['created_by']

шаблон (index.html)

  Please Enter the Questions
<form action="" method='post'>
 {{xquiz.as_table}}
 {{xquestion.as_table}}
 <input type='submit'>
</form>

Как получить несколько вопросов в форме теста?

1 Ответ

0 голосов
/ 26 июня 2010

пока все хорошо, на данный момент у вас должен быть рабочий вид с отображаемыми формами, если нет ошибок.

теперь вам просто нужно обработать данные записи в create_quiz представлении

if request.method == 'POST':
    xquiz = QuizForm(request.POST)
    quiz_instance = xquiz.save(commit=False)
    quiz_instance.created_by = request.user
    quiz_instance.save()
    xquestion = QuestionForm(request.POST)
    question_instance = xquestion.save(commit=False)
    question_instance.quiz = quiz_instance
    question_instance.save()

обновление: если вы ищете несколько форм вопросов, вам нужно взглянуть на наборы форм, http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#id1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...