我正在尝试根据用户的年龄选择在表单中打印结果,但是我的if,elif和else语句不起作用。
class Quiz(models.Model):
age_choices = (('10-12', '10-12'),
('13-16', '13-16'),
('17-20', '17-20'),
('21-23','21-23'),
)
age = models.CharField(max_length = 100, choices = age_choices)
views.py
def create_order(request):
form = QuizForm(request.POST or None)
if request.method == 'POST':
quiz = Quiz.objects
if quiz.age=='10-12':
print("10-12")
elif quiz.age=='13-16':
print("13-16")
elif quiz.age=='17-20':
print("17-20")
elif quiz.age=='21-23':
print("21-23")
else:
return None
context = {'form':form}
return render(request, "manualupload.html", context)
答案 0 :(得分:0)
quiz = Quiz.objects
将返回django.db.models.manager.Manager对象,该对象可以进一步用于从属于该特定模型的数据库中获取对象。适当的查询集将为quiz = Quiz.objects.all()
。然后,您将获得属于Quiz模型的所有对象的列表。一旦获得所有对象的列表,就可以通过建立索引或通过使用需要查询的特定查询进行过滤来获取特定对象,然后对于该特定对象可以获取age属性。
有关更多信息,请参见official django documentation about creating queries。
答案 1 :(得分:0)
如@ Abhijeetk431所述,您的问题出在quiz = Quiz.objects
上。
如果使用type(quiz)
,则会发现它输出django.db.models.manager.Manager
。这不是您想要的,因为age
是Quiz
类的属性,而不是Manager
类的属性。
对于初学者,请参阅this。
这将为您返回 Queryset列表,类似于Excel表。 age
类似于表中的列。
要获得age
,您需要的是上述表格中的 row (实际的Quiz
对象),您可以使用get
或方括号来实现[]
。
因此,您的代码应如下所示:
Model.objects.all()[0]
这将返回正确的对象(仅第一行),并允许您获取列值。
但是,除了“它不起作用”之外,您还需要进一步澄清,以确切了解您的问题。您怎么知道您的代码不起作用?调试器告诉了你什么?