2016-09-23 113 views
0

我有一個Django模型在另一個模型中被引用爲ForeignKey類型。爲了使這是在管理界面漂亮的一面展示我加了一個__unicode__方法,像這樣:救了我的models.py文件後更改爲未通過makemigrations檢測到的Django模型

class Foo(models.Model): 
    label = models.CharField(max_length=2) 
    description = models.TextField() 

    def __unicode__(self): 
     return self.label 

這種變化是在管理界面立即可見。但是當我運行makemigrations時,它返回No changes detected in app 'foo'。正在運行migrate什麼都不做,因爲它沒有看到任何更改,並且python manage.py check返回System check identified no issues (0 silenced).

我應該期待嗎?我對模型做了很多更改,因此運行了許多遷移(包括本週),但我從未遇到過這種情況。

目前運行Django 1.8.3與Sqlite開發數據庫,​​在Windows上的Python 2.7下。

回答

1

這應該沒問題。只有模型的結構發生更改時纔會創建遷移,也就是說,如果將任何新增值添加到模型中。

作爲新的方法,因爲他們不改變模型的結構,不需要遷移。因此,您可以愉快地將方法添加到您的模型,而無需運行單個遷移。

如果該名稱未顯示在django的管理後端,請嘗試使用方法__str__代替。這爲我工作(但在Linux上運行Python 3.5)。

def __str__ (self): 
    return self.name 
+0

很好,謝謝。我確實懷疑過。不過,我應該更新我的Python,並使用'__str__'來代替。 – ChrisM

相關問題