В Django я ищу рекомендации о том, как структурировать модели для приложения прогнозирования, которое похоже на приложение для опросов или опросов, но не совсем.
Обзор требований:
(1) В тесте будет несколько вопросов.
(2) Вопросы могут принимать несколько форм - True или False, множественный выбор с 3 вариантами, множественный выбор с 4 вариантами и т. Д.
(3) Пользователи представляют прогнозы (или ответы) для каждого вопроса в форме вероятностей с ограничением, что общая вероятность составляет 100%. Таким образом, для вопроса № 1 с тремя вариантами AC пользователь может прогнозировать A: 30%, B: 50%, C: 20%
(4) Каждый вопрос имеет 1 правильный ответ.
[Вопросы оцениваются с использованием оценки Бриера, но это не существенно для этого обсуждения.]
Я знаком с приложением для опроса в учебнике Django и смотрел несколько приложений для викторин, но ни одно из них не решает мою проблему.
Если я использую структуру учебника опроса Django с неопределенным числом вариантов, то я не могу понять, как организовать прогноз пользователя на вопрос - так как этот прогноз должен иметь вероятность для каждого варианта ивероятности должны составлять до 100%.
Если я создаю несколько моделей вопросов, таких как TrueFalseQuestion, MultipleChoice3OptionsQuestion и т. д., тогда мои представления и шаблоны становятся громоздкими, поскольку я не могу просто установить контекст для модели Вопроса.
Я подумал о создании родительского класса Question с abstract = True, а затем о создании дочерних классов типа "classTFQuestion (вопрос):». Но, опять же, это ограничивает мою способность использовать общие шаблоны, такие как ListView, так как у меня теперь есть много дочерних классов.
Подводя итог, можно сказать, что моя проблема отличается от всего, что я могу найти, это: Большинство приложений викторины имеютПользователь предоставляет один выбор из нескольких вариантов, независимо от того, сколько вариантов. Мое приложение требует ответа (прогноз), который состоит из вероятности для каждого варианта выбора, а также ограничение, что вероятности равны 100%.
************* ДОБАВЛЕНИЕ БОЛЬШЕ ДЕТАЛИНИЖЕ *************
Для упрощения, давайте предположим, что я хочу, чтобы у каждого вопроса было 3 варианта множественного выбора. В этом случае каждый пользовательский прогноз будет состоять из набора из 3 вероятностей и комментария.
Первый вопрос: существует ли лучший способ структурировать приведенные ниже модели для случая с 3 вариантами ответа?
class Quiz(models.Model):
name = models.CharField(max_length=20)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
class Question(model.Model):
quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
question_text = models.CharField(max_length=200)
choice1 = models.CharField(max_length=200)
choice2 = models.CharField(max_length=200)
choice3 = models.CharField(max_length=200)
correct_choice = models.IntegerField()
class Forecast(model.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE)
comment = models.CharField(max_length=200)
prob1 = models.IntegerField()
prob2 = models.IntegerField()
prob3 = models.IntegerField()
Если это хорошая структура для вопросов с 3 вариантами, то как бы я расширил это в соответствии с моими первоначальными требованиями иметь вопросы с 2, 3, 4, 5 вариантами?
Моя проблема заключается в том, чтоесли я использую структуру в приложении опроса учебника Django, где число вариантов выбора не определено, то моя модель прогнозирования выше ломается, так как в ней жестко заданы 3 варианта.