Я учу джанго время от времени уже несколько лет и считаю себя продвинутым новичком, ха.Я работаю над «взвешенным вопросником» (это лучшее имя, которое я могу дать в любом случае) для клиента и ходил кругами о том, где его использовать.
Клиент придумал сериюиз вопросов да или нет и в зависимости от ответа будут применяться определенные весовые коэффициенты.В конце после подачи мне нужно проверить ответы и сложить весовые коэффициенты, а затем показать отчет с предлагаемыми продуктами на основе весовых коэффициентов.Весовые коэффициенты - это просто продукты с определенными числовыми значениями для каждого вопроса.
Например:
«Вы курите?»
Если ответили «да»,затем примените следующее: Core (1), Alpha (4), Liver (2), Jade (1), Rejuve (4)
Я установил начальные модели и администратора, но я вродеозадачен тем, как писать мнения.Они смогут добавлять вопросы с желаемыми ответами, а затем столько весов (которые имеют внешний ключ к продуктам) и значений для каждого вопроса, сколько они хотят.
Вот мои модели:
from django.db import models
from src.products.models import Product
"""
This app has 'yes' or 'no' questions. Each question has several 'weightings'
atached to it which are tallied at the end to recommend specific products
to the user doing the questionairre.
"""
class Question(models.Model):
"""Yes or no questions to gether enough info to recommend products via the weightings."""
ANSWER_CHOICES = (
('y', 'Yes'),
('n', 'No'),
)
GENDER_CHOICES = (
('a', 'All'),
('m', 'Male'),
('f', 'Female'),
)
question_text = models.CharField(
help_text="The text to be displayed for the question",
max_length=300
)
answer = models.CharField(
help_text="Weightings will be applied based on the answer. <br> Ex: If 'Yes' is chosen for 'Do you smoke?', then weightings will be applied if the user answers 'Yes'",
max_length=1,
choices=ANSWER_CHOICES
)
applies_to = models.CharField(
help_text="Used to filter questions based on gender of user answering the questions.",
max_length=1,
choices=GENDER_CHOICES
)
order = models.IntegerField(
help_text="Used to determine the ordering of the questions. If left blank, the question will appear after those which are ordered.",
blank=True,
null=True,
)
class Meta:
verbose_name_plural = 'questions'
ordering = ['order']
def __unicode__(self):
return self.question_text
class Weighting(models.Model):
"""References products with a specified weighting.
Added up at end to recommend products."""
question = models.ForeignKey(Question)
product = models.ForeignKey(Product)
value = models.IntegerField()
def __unicode__(self):
return '%s %s %s' % (self.question, self.product, self.value)
Я вручную создаю формы прямо сейчас.Я считаю, что это лучший способ.
Итак, каков будет лучший способ получить ответы по почте, затем сравните ответ с желаемым ответом и получите сумму весов по всемвопросы?
Последняя часть с суммой кажется наиболее сложной.
Мысли и предложения?
РЕДАКТИРОВАТЬ: Использование для справки:
http://questionnaire.corporatism.org/