我有一个像QUZ这样的项目.但我需要在问题中打乱答案. 以下是我的代码: Template.html

 <form method="post">
    {% csrf_token %}
    <h3>{{ current_question.text }}</h3>
    {{ form.selected_answer }}
     <button type="submit">Next</button>
  </form>

Views.py

        if request.method == 'POST':
            form = QuestionForm(request.POST, question=current_question)
            if form.is_valid():
                user_answer = form.cleaned_data['selected_answer']
                user_test.useranswer_set.update_or_create(question=current_question,
                                                          defaults={'selected_answer': user_answer})
                return redirect('test', test_id=test_id)
        else:
            form = QuestionForm(question=current_question)

这是我的Django表格.我试着这样做,但不起作用:

from django import forms
from .models import Answer
import random
from django.db.models.query import QuerySet


class QuestionForm(forms.Form):
    selected_answer = forms.ModelChoiceField(
        queryset=Answer.objects.none(),
        widget=forms.RadioSelect,
        empty_label=None
    )

    def __init__(self, *args, question=None, **kwargs):
        super().__init__(*args, **kwargs)
        if question:
            answers = list(question.answer_set.all())
            random.shuffle(answers)
            self.fields['selected_answer'].queryset = answers

推荐答案

如果答案的数量很少,就像这里的情况一样,你可以用.order_by('?') [Django-doc]个:

class QuestionForm(forms.Form):
    selected_answer = forms.ModelChoiceField(
        queryset=Answer.objects.none(), widget=forms.RadioSelect, empty_label=None
    )

    def __init__(self, *args, question=None, **kwargs):
        super().__init__(*args, **kwargs)
        if question:
            self.fields[
                'selected_answer'
            ].queryset = question.answer_set.order_by('?')

Python相关问答推荐

如何修复使用turtle和tkinter制作的绘画应用程序的撤销功能

不允许AMBIMA API请求方法

从包含数字和单词的文件中读取和获取数据集

Polars:使用列值引用when / then表达中的其他列

剧作家Python没有得到回应

如何在Python中并行化以下搜索?

运输问题分支定界法&

从spaCy的句子中提取日期

cv2.matchTemplate函数匹配失败

如何在UserSerializer中添加显式字段?

给定高度约束的旋转角解析求解

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

OpenGL仅渲染第二个三角形,第一个三角形不可见

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

如何获得满足掩码条件的第一行的索引?

用0填充没有覆盖范围的垃圾箱

PYTHON中的selenium不会打开 chromium URL

将像素信息写入文件并读取该文件

如何在python tkinter中绑定键盘上的另一个回车?

大型稀疏CSR二进制矩阵乘法结果中的错误