无法在 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)