为什么我的 Django 查询集不起作用?

Why won't my django queryset work?

我正在尝试 运行 一个查询集,过滤器的值是字典中的值。

latest_entries = Entry.objects.filter(zipcode__in=nearestzips.values())

print latest_entries
>>>TypeError: Cannot use a multi-field GeoValuesQuerySet as a filter value.

第二次尝试

latest_entries = Entry.objects.filter(zipcode__in=nearestzips.values_list('code', flat=True))

print latest_entries
>>>ProgrammingError: invalid reference to FROM-clause entry for table "cities_postalcode" HINT perhaps you meant to reference the table alias"u0"

我怎样才能做到这一点?我是否应该采取额外的步骤来创建一个新列表并将字典值附加到列表中?然后运行queryset就行了?我不知道该怎么做。

编辑:

当我打印 nearestzips 时,我得到:

[<PostalCode:97201>,<PostalCode:97202>]

但是,当我打印 nearestzips.values() 时,我得到:

[distance:0, code: 97201, name: Portland, subregion: Multnomah] etc.

看起来 nearestzipsQuerySet 的子类,后者失去了一些兼容性。尝试将 values_list() 转换为简单的 python 列表:

zip_codes = list(nearestzips.values_list('code', flat=True))
latest_entries = Entry.objects.filter(zipcode__in=zip_codes)