2016-07-31 16 views
0

當我嘗試訪問外鍵時,我得到「沒有這樣的列」。這裏是一個模式:Django(SQLite) - 無法訪問外鍵 - 沒有這樣的列 - 自定義sql

class PerkLevel(models.Model): 
    perk_id = models.ForeignKey('Perk', on_delete=models.CASCADE, related_name='perk_id') 
    perk_level = models.IntegerField(default=1, choices=PERK_LEVELS) 
    perk_desc = models.CharField(max_length=250, null=True, blank=True) 

    class Meta: 
     db_table = u'pl' 

當我嘗試執行這樣一個簡單的查詢:

cursor.execute("SELECT perk_id FROM pl") 

我得到「沒有這樣的列:perk_id。」在編寫我自己的sql時如何獲得外鍵?

回答

1

Django將其自己的_id添加到外鍵的末尾。在這種情況下,我會使用perk_id_id

+0

...這就是爲什麼你不應該在ForeignKey名字中首先使用_id的原因之一。只要將它稱爲'perk',那麼db列將是'perk_id'。 –

+0

我希望Django不會混淆我選擇的名字。就我而言,我第一次做對了!我嘗試了很多其他的事情後,偶然偶然發現了這個解決方案,因爲我隱約記得閱讀文檔中的'_id'。 – Rokit