2014-04-30 92 views
1

我想創建一個Django項目的數據庫表。 ArztFachbereichArztFachbereich之間存在多對多關係。Django syncdb與ManytoMany字段通過類

class Fachbereich(models.Model): 
    id = models.IntegerField(db_column='FachID', primary_key=True) 
    name = models.CharField(db_column='Name', unique=True, max_length=100) 

class Arzt(models.Model): 
    name = models.CharField(max_length=500) 
    fachbereich = models.ManyToManyField(Fachbereich, through=ArztFachbereich) 

class ArztFachbereich(FachbereichUndArztFachbereiche): 
    arzt = models.ForeignKey(Arzt) 
    fachbereich = models.ForeignKey(Fachbereich) 

執行執行syncdb後,我得到NameError:名字 'ArztFachbereich' 沒有定義

當我改變Arzt和ArztFachbeeich的地方,我得到的只是與Arzt相同NameError。 有沒有辦法做到這一點?或者我應該在MySQL中做這個手冊嗎?

回答

3

您需要在傳遞給through參數的模型中加上引號。

它更改爲:在文檔here

fachbereich = models.ManyToManyField(Fachbereich, through='ArztFachbereich') 

實施例。

編輯:

正如評論指出的安德魯,投入引號的模式使得評價懶惰,所以ORM會回來之前先分析所有類。

+1

是的,這使得評估'ArztFachbereich'懶惰,以便ORM將首先解析所有類,然後返回並找到引用的字段。 –

+0

謝謝@AndrewGorcester。將添加回答。 – Alex

+0

你是我的英雄!謝謝,這是有效的。我實際上是用這個例子構建的,但似乎我無法看到這些引號^^ – Sehebo