无法在 Django 中迭代查询集
Cannot iterate a queryset in Django
我有这个型号
class AgeRange(models.Model):
frm = models.CharField(max_length=20, blank=False)
to = models.CharField(max_length=20, blank=False)
现在,当我尝试用从 frm+to fileds 收缩的值填充下拉列表时。
所以,我 运行 这个查询集:
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()
return 作为参数传递的字段值字典
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)
我有这个型号
class AgeRange(models.Model):
frm = models.CharField(max_length=20, blank=False)
to = models.CharField(max_length=20, blank=False)
现在,当我尝试用从 frm+to fileds 收缩的值填充下拉列表时。 所以,我 运行 这个查询集:
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()
return 作为参数传递的字段值字典
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)