python - Django -> 无法解析关键字错误,但字段位于回溯中​​的选项中

标签 python mysql django postgresql

迁移到新的 Django,我收到此错误。我的模型:

class TourRoute(models.Model):
    tour = models.ForeignKey(Tour, verbose_name=_(u'tour'), db_index=True)
    country = models.ForeignKey(Country, verbose_name=_(u'country'), 
                                db_index=True)

class Tour(models.Model):
    category = models.ForeignKey(TourCategory, verbose_name=_(u'tour type'), 
                             null=True, blank=True)
    kind = models.ForeignKey(TourKind, verbose_name=_(u'tour kind'), null=True, 
                             blank=True, default=1)
    tour_class = models.ForeignKey(TourClass, verbose_name=_(u'class'), 
                             null=True)
    type = models.ForeignKey(TourType, verbose_name=_(u'tour type'), 
                             null=True, blank=True)
    ...

在views.py中:

country_tours = Tour.objects.filter(tourroute__country__link=country.link)

在traceback django中看到这个字段( iraceback image ): 无法将关键字“tourroute”解析为字段。选项有: Accommodation_note、... 旅游路线、...

我尝试:

  • 添加 related_name(两个回溯位置的tourroute 均更改为 related_name 值)
  • 删除所有表并在 MySQL/PostgreSQL 上创建新数据库
  • 更改替换我的 django(在同一服务器上的另一个项目中工作,没有此错误)

最佳答案

似乎缺少一个_set,应该是:

country_tours = Tour.objects.filter(tourroute_set__country__link=country.link)

或者更好的是,向模型添加相关名称,以使其更具可读性

class TourRoute(models.Model):
    tour = models.ForeignKey(Tour, verbose_name=_(u'tour'), 
                             db_index=True, related_name='routes')

所以你可以这样做

country_tours = Tour.objects.filter(routes__country__link=country.link)

关于python - Django -> 无法解析关键字错误,但字段位于回溯中​​的选项中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37229138/

相关文章:

Python - 压缩 Ascii 字符串

python - Pandas 值错误 : 'Date' is not in list

mysql在同一张表上有子查询

mysql - 这个不寻常的 CREATE TABLE 语法是什么?

python - 使用psycopg2将django数据库从sqlite迁移到postgres错误

python - Sublime Editor 插件记住变量

python - 如何在 pysnmp 中查找 mib 表?

mysql - 为表而不是数据库创建具有删除权限的用户

python - 无法导入设置。不支持按名称导入

django - 如何在Django中建立Gmail样式搜寻?