2010-02-10 116 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