フィルタの値がディクショナリ内の値であるクエリセットを実行しようとしています。
latest_entries = Entry.objects.filter(zipcode__in=nearestzips.values())
print latest_entries
>>>TypeError: Cannot use a multi-field GeoValuesQuerySet as a filter value.
2回目の試行
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"
どうすればこれを達成できますか?新しいリストを作成し、辞書の値をリストに追加するという追加の手順を実行する必要がありますか?そして、リストでクエリセットを実行しますか?どうしたらいいのかわからない。
編集:
最寄りのzipを印刷すると、次のようになります。
[<PostalCode:97201>,<PostalCode:97202>]
しかし、nearestzips.values()を出力すると、次のようになります。
[distance:0, code: 97201, name: Portland, subregion: Multnomah] etc.
はのnearestzips
サブクラスのようですが、QuerySet
互換性が失われています。values_list()
単純なPythonリストに変換してみてください。
zip_codes = list(nearestzips.values_list('code', flat=True))
latest_entries = Entry.objects.filter(zipcode__in=zip_codes)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加