我写了一个小应用程序,允许用户创建自己的Excel报告。我的一个查询将列表解压缩到.values()
以返回列。我遇到的问题是尝试迭代/引用返回的值,因为我不知道报告中包含哪些值。
这是我的尝试:
queryset = Claim.objects.filter(client=client, creation__year=year, creation__month=month)\
.values(*values).order_by('id')
for i, c in enumerate(queryset):
for ii, r in enumerate(c):
print c
我得到了
TypeError: 'Claim' object is not iterable
答案 0 :(得分:3)
问题是您的第5行for ii, r in enumerate(c):
您无法枚举Model
类型。
当你在第一个循环中领先时,你可以退出。 (我不明白为什么第二个循环在那里......)
for i, c in enumerate(queryset):
print i, c, type(c)
你会得到类似的东西:
0 {[some dict data]} <dict>
1 {[some dict data]} <dict>
2 {[some dict data]} <dict>
3 {[some dict data]} <dict>
....
答案 1 :(得分:0)
感谢Javier Buzzi我能够意识到自己的错误。我需要values_list()而不是values()。
queryset = Claim.objects.filter(client=client, creation__year=year, creation__month=month)\
.values_list(*values).order_by('id')
for i, c in enumerate(queryset):
print q[i]
答案 2 :(得分:0)
这里 Bankdetails是一个虚构的模型,这是一个迭代查询集的简单解决方案
from django.core import serializers
object_list = serializers.serialize("python", Bankdetails.objects.all())
for object in object_list:
for field_name, field_value in object['fields'].items():
print (field_name,'->', field_value)
print()
输出
email -> rahul@gmail.com
name -> RAHUL
fullname -> Rahul Kushwaha
cardno -> 1764987364892637
expm -> 02
cvv -> 343
expy -> 2022
address -> RZ-B
city -> New Delhi
email -> seema@gmail.com
name -> SEEMA
fullname -> Seema Kumari
cardno -> 123456789120393
expm -> 08
cvv -> 56
expy -> 2023
address -> HK/L
city -> New Delhi
要了解更多信息,请访问此处 https://btechcse762.blogspot.com/2020/11/different-ways-to-perform-operations-on.html