Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我应该在这个Django模型中使用ForeignKey吗?_Python_Django_Django Models_Foreign Keys - Fatal编程技术网

Python 我应该在这个Django模型中使用ForeignKey吗?

Python 我应该在这个Django模型中使用ForeignKey吗?,python,django,django-models,foreign-keys,Python,Django,Django Models,Foreign Keys,我读了很多关于Django的书,终于开始为我概述的一个项目开发模型,但是我在理解外键以及如何/何时使用它们方面遇到了困难。为了更好地理解外键,我读了一些关于数据库工作的书,但是由于没有以前的数据库经验,我仍然有点困惑 我提出了一个例子,类似于我正在进行的项目,我想知道ForeignKey的两种用法是否都正确,或者我应该使用OneToOneField还是ManyToManyField来代替它们 在这个示例中,我希望每个桥都有多个构建器,每个工具都有多个不同的用户(或熟练使用它们的构建器)。我不希望

我读了很多关于Django的书,终于开始为我概述的一个项目开发模型,但是我在理解外键以及如何/何时使用它们方面遇到了困难。为了更好地理解外键,我读了一些关于数据库工作的书,但是由于没有以前的数据库经验,我仍然有点困惑

我提出了一个例子,类似于我正在进行的项目,我想知道ForeignKey的两种用法是否都正确,或者我应该使用OneToOneField还是ManyToManyField来代替它们

在这个示例中,我希望每个桥都有多个构建器,每个工具都有多个不同的用户(或熟练使用它们的构建器)。我不希望一个建设者同时在多座桥上工作(OneToOne??)。但是,我希望每个构建者都能够拥有他们熟练使用的多种工具(很多??)

据我所知,我可以在views.py文件中检索构建器的所有工具,尽管我还没有了解到开发的这一部分,并且希望在实现这一点之前确保我有一个强大的模型

考虑到这个问题的一般性和开放性,总的来说,我想有人来解释一下:

WHY each ForeignKey relationship in this example 
model is either used correctly or incorrectly.

这实际上不是Django的问题,而是ORM的问题,您需要了解ORM是如何工作的(除了所使用的语言和框架)。 您的案例会产生不同的结果:


1座桥可以有很多工人(一座桥)如果在桥中指定foreignkey,那么实际上就是说桥属于工人,工人可以有许多不同的桥,如果在工人中指定foreignkey,那么这意味着工人有桥,但桥可以有许多工人。如果在工人模型中添加关系,可以将其想象为下拉列表然后为特定的辅助对象选择网桥(在下拉列表中),如果以其他方式指定,则为网桥选择辅助对象。
WHY each ForeignKey relationship in this example 
model is either used correctly or incorrectly.