我有一個Django應用程序,它有一系列郵編標記的帖子。我想創建一個按州顯示所有帖子的頁面,但不知道如何處理。我有一個ZipCode表,但我的Post.zipcode字段與它無關(主要是因爲它是用戶輸入的,並且允許不在數據庫中或來自美國以外的zip)。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()
在我的Django的觀點我很樂意採取從我的URL模式通過在「狀態」參數做這樣的事情:
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.
任何人都有一個提示,我應該如何構建一個查詢集,將所有帖子都拉到一個請求的狀態?先謝謝你。
如果您可以修改模型,則可以更快地將狀態字段添加到Post模型中。當創建一個帖子時,快速查看ZipCode表以獲取狀態。 – Seth 2011-01-11 07:37:49
謝謝Seth,我只是在考慮自己。最終,我打算使用Lat和Long來執行基於郵政編碼的半徑查找,並且我將遇到同樣的問題。想知道是否需要使Post.zipcode成爲一個真正的ForeignKey,以及如果用戶想用不在我的ZipCode數據庫中的zip標記帖子,這將意味着什麼。 – mitchf 2011-01-11 07:41:44