Python Django OneToOneField,ManyToManyField,外键
我读过很多关于OneToOneField、ManyToManyField和Foreign Key的帖子,但都不是很清楚。我对Django和python编程非常陌生,目前正在尝试开发模型。有人能用简单的语言(最好是举例)向我解释一下它们各自是什么吗?想象一个数据库,它存储着你的藏书: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
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很乐意帮忙。(: