Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 OneToOneField,ManyToManyField,外键_Python_Django_Foreign Keys_One To One_Django Orm - Fatal编程技术网

Python Django OneToOneField,ManyToManyField,外键

Python Django OneToOneField,ManyToManyField,外键,python,django,foreign-keys,one-to-one,django-orm,Python,Django,Foreign Keys,One To One,Django Orm,我读过很多关于OneToOneField、ManyToManyField和Foreign Key的帖子,但都不是很清楚。我对Django和python编程非常陌生,目前正在尝试开发模型。有人能用简单的语言(最好是举例)向我解释一下它们各自是什么吗?想象一个数据库,它存储着你的藏书: from django.db import models class Place(models.Model): address = models.CharField(max_length=50) c

我读过很多关于OneToOneField、ManyToManyField和Foreign Key的帖子,但都不是很清楚。我对Django和python编程非常陌生,目前正在尝试开发模型。有人能用简单的语言(最好是举例)向我解释一下它们各自是什么吗?

想象一个数据库,它存储着你的藏书:

from django.db import models

class Place(models.Model):
    address = models.CharField(max_length=50)
    country = models.CharField(max_length=50)

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    place = models.OneToOneField(Place, primary_key=True)

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)

class Book(models.Model):
    title = models.CharField(max_length=100)
    publisher = models.ForeignKey(Publisher)
    authors = models.ManyToManyField(Author)
一对多/外键

每本
都有一家
出版商
,但一家
出版商
可能出版了多本书。因此,他们是一对多(书籍对出版商)关系

一对一

每个
出版商
位于一个
位置
,每个
位置
只能容纳一个
出版商
。因此,他们是一对一的关系。您完全可以将
位置
信息(
地址
国家
)与
出版商
模型放在一个表中,但有时最好使用单独的模型。例如,如果您不知道每个
发布者的
位置
,则不需要用空行占用大量空间

多对多

每本
也有一个或多个
作者
s。但是,一个
作者可能写了多本
s,因此他们之间存在多对多关系


如果您还需要一些指导,我建议您看看。

回答得很好。我还建议OP阅读数据库关系,因为它们直接应用于这些Django字段。试试这个-这为我清理了一切!非常感谢你!对不起,我没有足够的声誉来提升你的答案=/@Rjzheng很乐意帮忙。(: