我有一个 Django 应用程序,其中包含一系列带有邮政编码标签的帖子。我想创建一个按州显示所有帖子的页面,但不知道如何去做。我确实有一个 ZipCode 表,但我的 Post.zipcode 字段与它无关(主要是因为它是用户输入的,并且允许不在数据库中或来自美国以外的邮编)。
我的相关模型:
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 字段不是 ZipCode 的外键,所以如果我尝试,我会收到此错误:
FieldError at /post/state/VT/
Join on field 'zipcode' not permitted.
任何人都暗示我应该如何构建一个查询集,将所有帖子拉到一起以获得请求的状态?先感谢您。