Django order_by将查询集随机化两次?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django order_by将查询集随机化两次?相关的知识,希望对你有一定的参考价值。
我正在尝试将我正在研究的程序的查询集随机化。
full_quiz = Quiz.objects.get(name=quiz_name).questions.all()
form = TheForm(full_quiz)
if request.method == "POST":
form = QuestionForm(request.GET, full_quiz)
根据我的测试,似乎查询集正在使用第二个form变量进行随机化。有任何解决办法吗?
谢谢
答案
您可以按照here所述获得随机订单查询集:
full_quiz = Quiz.objects.get(name=quiz_name).questions.order_by('?')
您尚未发布表单的代码,但我希望QuestionForm是ModelFormSet。您可以通过设置queryset arg来更改ModelFormSet的queryset(请参见docs):
form = QuestionForm(queryset=fullquiz)
所以在您看来,您可以像这样进行平滑处理:
def myview(request, quiz_name):
if request.method == 'POST':
form = QuestionForm(request.POST)
if form.is_valid():
# process data and redirect
fullquiz = Quiz.objects.get(name=quiz_name).questions.order_by('?')
form = QuestionForm(queryset=fullquiz)
return render(request, 'yourtemplate.html', {'form': form })
以上是关于Django order_by将查询集随机化两次?的主要内容,如果未能解决你的问题,请参考以下文章