from django.db import models
from quiz.models import Question
+ANSWER_ORDER_OPTIONS = (
+ ('content', 'Content'),
+ ('random', 'Random'),
+ ('none', 'None'),
+)
class MCQuestion(Question):
+ answer_order = models.CharField(max_length=30, null=True, blank=True,
+ choices=ANSWER_ORDER_OPTIONS,
+ help_text="The order in which multichoice answer "
+ "options are displayed to the user")
+
def check_if_correct(self, guess):
answer = Answer.objects.get(id=guess)
else:
return False
+ def order_answers(self, queryset):
+ if self.answer_order == 'content':
+ return queryset.order_by('content')
+ if self.answer_order == 'random':
+ return queryset.order_by('?')
+ if self.answer_order == 'none':
+ return queryset.order_by()
+ return queryset
+
def get_answers(self):
- return Answer.objects.filter(question=self)
+ return self.order_answers(Answer.objects.filter(question=self))
def get_answers_list(self):
return [(answer.id, answer.content) for answer in
- Answer.objects.filter(question=self)]
+ self.order_answers(Answer.objects.filter(question=self))]
def answer_choice_to_string(self, guess):
return Answer.objects.get(id=guess).content
list_display = ('content', 'category', )
list_filter = ('category',)
fields = ('content', 'category', 'sub_category',
- 'figure', 'quiz', 'explanation')
+ 'figure', 'quiz', 'explanation', 'answer_order')
search_fields = ('content', 'explanation')
filter_horizontal = ('quiz',)