【问题标题】:How to extract values from queryset objects in python?如何从python中的查询集对象中提取值?
【发布时间】:2018-04-05 12:46:52
【问题描述】:

我正在尝试在 django 中比较一个测验的值。我将 POST 数据用于对象数据并尝试相互比较。

当前代码:

answerList = []
answerList2 = []
for i in Question.objects.filter(related_quiz = examid):
    answerList.append(i.answer)

form = EditQuizForm()
form = EditQuizForm(request.POST)

if request.method == "POST":
    form = EditQuizForm(request.POST)
    submittedObject = request.POST.copy()
    newList = (dict(submittedObject.lists()))
    values = newList.values()
    for i in values:
        answerList2.append(i)

    print(answerList)
    print(answerList2)

这会返回值:

      ['A', 'D']
      [['A'], ['D']]

但是,我不能遍历这些来比较它们,因为它们并不相同。我不知道如何让 answerList2 看起来像 answerList1 那样我可以比较这些值。任何帮助将不胜感激,因为我对 python/django 相当陌生。

【问题讨论】:

  • 据我了解,您希望将answerList 的值与answerList2 进行比较。对吗?
  • 没错(例如,比较“A”和“A”,“D”和“D”)
  • 您可以尝试打印“newList”对象和“submittedObject”并向我们展示以下输出吗?将有助于调试您的代码。
  • 提交对象: newList: {'1': ['A'], ' 2': ['D']}

标签: python django forms list django-queryset


【解决方案1】:

您可以循环比较 answerList 的值和 answerList2 的索引 0 的值

def compareLists(answerList, answerList2):
   for i in range(len(answerList)):
      if answerList[i] != answerList2[i][0]:
         break
   else:
      return True
   return False

当一个项目不同时,循环将被 break 打破,函数将返回 False。否则它不会以 break 退出并返回 True。

希望对我有所帮助:)

【讨论】:

  • 只是代码中的一个小错字,第二个 answerList 缺少“2”。测试了一下,还是可以的,谢谢!
猜你喜欢
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多