Django if elif else语句

时间:2020-07-27 06:07:04

标签: python django

我正在尝试根据用户的年龄选择在表单中打印结果,但是我的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)
    
   
     

2 个答案:

答案 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。这不是您想要的,因为ageQuiz类的属性,而不是Manager类的属性。

对于初学者,请参阅this

这将为您返回 Queryset列表,类似于Excel表。 age类似于表中的。 要获得age,您需要的是上述表格中的 row (实际的Quiz对象),您可以使用get或方括号来实现[]

因此,您的代码应如下所示:

Model.objects.all()[0]

这将返回正确的对象(仅第一行),并允许您获取列值。

但是,除了“它不起作用”之外,您还需要进一步澄清,以确切了解您的问题。您怎么知道您的代码不起作用?调试器告诉了你什么?