【发布时间】:2014-07-30 11:40:00
【问题描述】:
我已经阅读了很多关于 Django 的内容,并终于开始为我概述的项目开发模型,但我无法理解 ForeignKeys,以及如何/何时使用它们。我已经阅读了一些关于数据库工作的信息,以便更好地理解外键,但是没有以前的数据库经验,我仍然有点困惑。
我提出了一个示例情况,类似于我正在从事的项目,并且想知道 ForeignKey 的两种用法是否正确,或者我应该使用 OneToOneField 或 ManyToManyField 代替它们。
在此示例情况下,我希望每个 Bridge 有多个构建器,并且每个工具有多个不同的用户(或熟练使用它们的构建器)。我不希望建造者同时在多座桥梁上工作(OneToOne??)。但是,我希望每个构建者都能够拥有他们熟练使用的多种工具(ManyToMany??)。
class Builder(models.Model):
first_name = models.CharField( max_length = 50 )
class Bridge(models.Model):
bridge_name = models.CharField( max_length = 50 )
builders = models.ForeignKey(Builder)
class Tool(models.Model):
tool_name = models.CharField( max_length = 50 )
users = models.ForeignKey( Builder )
据我了解,我可以在 views.py 文件中检索所有构建器的工具,尽管我还没有进行这部分开发,并希望在获得之前确保我有一个强大的模型远。
考虑到这个问题的普遍性和开放性,总的来说,我希望有人解释一下:
WHY each ForeignKey relationship in this example
model is either used correctly or incorrectly.
【问题讨论】:
标签: python django django-models foreign-keys