问题描述
我有这个模特
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)