郵便番号の付いた一連の郵便番号付きのDjangoアプリがあります。私は州ごとにすべての投稿を表示するページを作成したいと思いますが、その方法についてはわかりません。私はZipCodeテーブルを持っていますが、私のPost.zipcodeフィールドはそれに関連していません(主にユーザが入力したもので、DB内や米国外のzipを許可しているためです)。Django:郵便番号
私の関連モデル:私は私のURLパターンから渡される「状態」のパラメータを取り、このような何かをしてみたい私のDjangoのビューで
class Post(models.Model):
body = models.TextField()
zipcode = models.CharField(max_length=5)
class ZipCode(models.Model):
zipcode = models.CharField(max_length=5)
city = models.CharField(max_length=64)
statecode = models.CharField(max_length=2)
statename = models.CharField(max_length=32)
latitude = models.FloatField()
longitude = models.FloatField()
:
def posts_by_state(request, state):
posts = Post.objects.filter(zipcode__statecode=state)
...
私がしようとした場合、私はこのエラーが出るよう
は残念ながら、私のPost.zipcodeフィールドは、郵便番号への外部キーではありません。
FieldError at /post/state/VT/
Join on field 'zipcode' not permitted.
要求された状態のためにすべての投稿をまとめてクエリーセットを構築する方法についてのヒントはありますか?前もって感謝します。
モデルを変更できる場合は、ポストモデルに状態フィールドを追加する方が早い場合があります。投稿が作成されたら、ZipCodeテーブルをすばやく調べて状態を取得します。 – Seth
セスありがとう、私はちょうど自分自身を考えていた。最終的には、緯度と経度を使用して郵便番号ベースの半径ルックアップを行いたいと思います。同じ問題が発生します。私がPost.zipcodeを本当のForeignKeyにする必要があるのかどうかと、ユーザーが私のZipCode DBにないzipで投稿にタグを付けることを望んでいる場合はどうなるのだろうかと思います。 – mitchf