Форум сайта python.su
0
Добрый день!
Подскажите, как правильно решить следующую задачу.
Делаю опросник вот примерная структура БД (я пони здесь не использовал) https://editor.ponyorm.com/user/dvasya/Polls
Как сделать форму так чтоб форма отображала варианты ответов для вопросов в радио-батн
И при отправке то что выбрал пользователь сохранялось в таблицу UserAnswer с флагом True.
Модель:
from django.db import models from django.contrib.auth.models import User # Списки Вопросов class Questions(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=255, null=False, blank=True) active = models.BooleanField() def isVote(self, user_id): if self.useranswer_set.filter(vote=True, user=user_id).count() > 0: return True else: return False def get_answers(self): return self.answers_set.all() class Meta: verbose_name = 'Вопросы' verbose_name_plural = 'Вопросы' def __str__(self): return self.title # Варианты ответов на вопрос class Answers(models.Model): id = models.AutoField(primary_key=True) questions = models.ForeignKey(Questions, unique=False, null=False) answer_name = models.CharField(max_length=255, null=False, blank=True) def _get_questions_name(self): return self.questions.title question_name = property(_get_questions_name) class Meta: verbose_name = 'Варианты ответов' verbose_name_plural = 'Варианты ответов' def __str__(self): return self.questions.title + ' ' + self.answer_name # Ответы пользователей class UserAnswer(models.Model): id = models.AutoField(primary_key=True) user = models.ForeignKey(User, unique=False) questions = models.ForeignKey(Questions, unique=False, null=False) answers = models.ForeignKey(Answers, unique=False, null=False) timestamp = models.DateTimeField(auto_now_add=True, auto_now=True) vote = models.BooleanField() def _get_question_name(self): return self.answers.questions.title question_name = property(_get_question_name) class Meta: verbose_name = 'Ответы пользователей' verbose_name_plural = 'Ответы пользователей' def __str__(self): return '%s %s %s' % (self.answers.questions.title, self.user.get_full_name(), self.answers.answer_name)
def polls(request): questions_data = Questions.objects.all() answers_data = Answers.objects.all() return render_to_response("dvpolls/polls.html", RequestContext(request, locals()))
{% extends 'base.html' %} {% load i18n %} {% block content %} {% for quest_item in questions_data %} <form class="post"> <h2 class="title"> {{ quest_item.title }} </h2> <div class="story"> {% for answ_item in quest_item.get_answers %} <p> <input type="radio" name = "answ_radio" value={{ answ_item.id }}> {{ answ_item.answer_name }} </p> {% endfor %} </div> <div class="meta"> <div class="btn-group" role="group"> <button type="submit" class="btn btn-default">Отправить</button> </div> </div> </br> </form> {% endfor %} {% endblock %}
Отредактировано dvasya (Июль 23, 2015 23:11:06)
Офлайн
0
Все разобрался….. Можно сделать например так:
answers = forms.ChoiceField(choices=[(c.id, c.answer_name) for c in Answers.objects.all()], widget=forms.RadioSelect)
Офлайн