2013-11-20 54 views
1

ForeignKey的命名約定與連接model的小寫版本命名,下面是從文檔採取:蟒蛇Django的名字convetions

class Car(models.Model): 
    manufacturer = models.ForeignKey(Manufacturer) 
    # ... 

class Manufacturer(models.Model): 
    # ... 
    pass 

,但我有以下型號:

class Work(models.model): 
    class = models.ForeignKey(Class) 
    #... 

class Class(models.model): 
    #... 
    pass 

正如我們所知,這會引發錯誤,因爲我們無法將變量設置爲class,因爲它已內置到python中。

問:

不會遵循命名約定實際上是在SQL數據庫創建一個問題嗎?

例如:

class Work(models.model): 
    cls = models.ForeignKey(Class) 
    #... 

class Class(models.model): 
    #... 
    pass 

將具有不同ForeignKey的名字搞亂了SQL表和數據庫的建立?

回答

4

你一定要遠離諸如Class,List,String等保留字。不管它是否會搞亂你的數據庫,我不確定(試試看!),但它絕對是一個餿主意。如果這不是一個SQL問題,它最終會在某個地方搞到一些東西。

我看到'克拉斯'很多,如果你覺得詞類是絕對必要的。 「課程」,也許?

+0

'cls'也是一種常見的收縮 – alko

+0

好的,這是真的,請看我在編輯部分的問題,並請回答。我只是很好奇 –

+1

出於同樣的原因,我會將類名從'Class'更改爲其他名稱。但是,'foo = models.ForeignKey(bar)'一般來說沒問題(儘管可能比必要的更混亂)。 – thumbtackthief