2010-02-10 303 views
0

我有2個模型,我想在類2中的類1上的任何實例我如何在django模型中做到這一點...我嘗試使用manytomany領域,但問題是當我添加一個新的對象它將有許多tomany領域已經存在(我不想)...任何想法我該如何做到這一點...一對多關係

回答

1

一對多關係只是一個ForeignKey在另一個方向。

+0

但問題是我想在類2中有多個類1的實例....它不可能與foreignkey !! – ramsin 2010-02-10 02:27:26

+0

是的。將'Model1'的'ForeignKey'設爲'Model2'。 Model2獲取一個名爲'model1_set'的屬性,這是一個管理器。 – 2010-02-10 02:28:46

+0

可以ü請給一個例子我很困惑....我有 類1 名= models.Char ..... 類2 MOD1 = models.Foregign ........ ... 這裏我想要mod1的多個實例...我該怎麼做 – ramsin 2010-02-10 02:32:58

0

您可能會遇到問題的一個原因是關係數據庫中的關係在對象中有些倒退。這聽起來像你想要class2的一個實例包含class1的列表。你這樣做的方法是在class1上有一個引用class2的ForeignKey。如果你不熟悉關係數據庫,它看起來像class2應該引用class1,但在關係世界中,當你有一對多的時候,許多人需要引用這個單一的。

例如說你有一個文件夾結構。你想到的「正常」方式是你有一個文件夾,並且該文件夾中有一些文件。但在關係數據庫中,該文件夾沒有文件列表。事實上,沒有任何東西可以(直接)有任何其他的列表。你所做的是每個文件都知道他們所在的文件夾的ID。現在,當你有一個文件夾,並且你想找到其中的文件時,你所做的就是查看所有文件並找到它們因爲它是容器而具有該文件夾。

+0

聽起來你想讓class2的一個實例包含class1的列表---正是這正是我想要的做....但每次它必須是新鮮的補充...默認情況下,現有的對象顯示出來,當我嘗試使用manytomany realtion – ramsin 2010-02-10 02:38:50

+0

使用ForeignKey像Ignacio說。問題是你試圖把ClassKey放在Class2上。這是不正確的。 ForeignKey需要在class1上指向一個class2。這將爲您提供class2和class1之間的一對多,class1恰好包含1個class2,並且class2將包含(間接)許多class1。 Django爲你處理這個魔法,並且會自動創建class2上的class1的列表,但是要意識到這實際上不是作爲數據庫中的列表存在的。一個數據庫行的列表是不可能的。當需要ManyToMany時,製作第三張表格 – Davy8 2010-02-10 02:50:30