我试图查询一个对象集,并使用对象的数量来执行一个for循环,该循环将呈现每个对象的参数。我使用一个2D数组来存储参数,这样它们就可以根据它们的对象来呈现。我想不只是一个解决方案,但在一般情况下,这样做的更好的方法。我刚接触django
这是来自views.py的代码
def flashcard(response):
form = Flashcard_verif(response.POST)
if response.method == "POST" and form.is_valid():
head = form.cleaned_data["header"]
ques = form.cleaned_data["question"]
ans = form.cleaned_data["answer"]
flashcard_data = Flashcard(header=head, question=ques, answer=ans)
# this is where the error is occuring
flashcard_obj = Flashcard(header=head, question=ques, answer=ans).objects.all()
rawHeader, rawQuestion, rawAnswer = Flashcard(header=head, question=ques, answer=ans).flash_format()
flashcard_data.save()
if len(flashcard_lib) > 1:
for i in range(0, len(flashcard_lib), 1):
flashcard_lib.append([rawHeader, rawQuestion, rawAnswer])
print(flashcard_lib)
return render(response, "main/Flashcard.html", {
"form":form,
"Flashcard_lib":flashcard_lib,
"flashcard":flashcard_obj})
else:
flashcard_lib.append([rawHeader, rawQuestion, rawAnswer])
print(flashcard_lib)
return render(response, "main/Flashcard.html", {
"form":form,
"header":rawHeader,
"question":rawQuestion,
"answer":rawAnswer
})
else:
form = Flashcard_verif()
return render(response, "main/Flashcard.html", {
"form":form})
字符串
这是我使用2d数组的模板:
<div class="flashcard-view" id="flash" style="visibility: hidden">
{% if Flashcard_lib|length >= 2 %}
{% for i in flashcard_obj %}
<div class="flashcard">
{{ i.0 }}
{{ i.1 }}
{{ i.2 }}
</div>
{% endfor %}
{% else %}
<div class="flashcard">
{{ header }}
{{ question }}
{{ answer }}
</div>
{% endif %}
</div>
型
当我运行服务器时,我注意到if语句执行了,但for循环没有执行。这是一个2合1的问题,我如何让它遍历列表。
1条答案
按热度按时间bgibtngc1#
排成一行
字符串
你创建了模型Flashcard的示例,但你没有将其保存到db,要做到这一点,你需要做:
型
行中发生错误
型
因为你创建了另一个示例(与上面2行的示例具有相同的数据),然后你试图用它来获取obj manager。在Django模型中,示例可以表示为:
如果你想得到所有的抽认卡记录在db你需要做的
型
其中Flashcard-是你的模型,objects-是对象管理器,它可以让你指定你需要什么-
Flashcard.objects.all()
-返回包含所有示例的查询集Flashcard.objects.filter(...)
-返回包含过滤记录的查询集Flashcard.objects.first()
-返回第一个对象(不是查询集!)以db等为单位。不能从示例调用obj管理器