2016-05-14 34 views
0

遷移到新的Django並收到此錯誤。我的模型: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) 

在回溯Django中看到這個領域(iraceback image): 無法解析關鍵字 'tourroute' 到現場。選項包括:accommodation_note,... tourroute,...

我嘗試:

  • 加入related_name(tourroute在這兩個地方回溯改爲related_name值)
  • 下降的所有表和創建新的數據庫MySQL的/ Postgersql
  • 改變取代我的Django的(在同一服務器上的另一個項目工作,而這個錯誤)

沒有任何幫助...

在我傷腦筋之前請幫助我。

P.S.對不起,我的英語

+0

回溯說,錯誤是在你的模板153線。請顯示您的模板的一部分。 – Alasdair

回答

0

找到的錯誤 - 其中一個應用過度導入django

感謝您的幫助!

UPD:這蜇傷在舊的應用程序版本是這個錯誤的原因:

options.Options._get_field = options.Options.get_field.im_func setattr(options.Options, 'get_field', get_field)

0

似乎有一個_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) 
+0

遷移到新的Django之前,此代碼已經工作 –

+0

我已經嘗試過了 - 沒有結果(請參閱上級:「將related_name(tourroute在兩個追蹤地點更改爲related_name值)」)。Аdding「_set」不起作用。 在這種情況下,我的treysbek不會那麼奇怪(tourroute是在選擇) –

相關問題