如何解决无法在Django中迭代查询集
我有这个模特
class AgeRange(models.Model):
frm = models.CharField(max_length=20,blank=False)
to = models.CharField(max_length=20,blank=False)
现在,当我尝试使用从frm +压缩到字段的值填充下拉列表时。 因此,我运行以下查询集:
class ReportForm(forms.ModelForm):
ranges = AgeRange.objects.all().values()
print(ranges)
for item in ranges:
print(item.frm)
其打印范围如下:
<QuerySet [{'id': 2,'frm': '1','to': '18'} ..... so on.
然后,我得到这个错误:
print(item.frm)
AttributeError: 'dict' object has no attribute 'frm'
我很困惑为什么在尝试迭代查询集时无法识别“ frm”:
for item in ranges:
print(item.frm)
解决方法
如果要在查询集中使用所有属性,则应删除values
。
因为values()
返回的字段值字典作为参数传递
ranges = AgeRange.objects.all()
print(ranges)
for item in ranges:
print ( item.frm)
尝试这种方式可以得到frm
,这是因为您将查询集转换为词典列表。
可以:
class ReportForm(forms.ModelForm):
ranges = AgeRange.objects.all().values()
print(ranges)
for item in ranges:
print(item['frm'])
或
class ReportForm(forms.ModelForm):
ranges = AgeRange.objects.all()
print(ranges)
for item in ranges:
print(item.frm)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。