我已经阅读了许多有关OneToOneField,ManyToManyField和Foreign Key的帖子,但它们并不是很清楚。我是Django和python编程的新手,目前正在尝试开发模型。有人可以用简单的语言向我解释,最好是举例说明它们各自的含义吗?
答案 0 :(得分:8)
想象一个存储您的图书集的数据库:
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)
一对多/外键
每个Book
只有一个Publisher
,但Publisher
可能已发布多本图书。因此,他们处于一对多(书籍与出版商)的关系中。
<强>一对一的强>
每个Publisher
位于一个Place
中,每个Place
只能容纳一个Publisher
。因此,他们是一对一的关系。您可以将Place
信息(address
和country
)与Publisher
模型放在一个表中,但有时候最好有单独的模型。例如,如果您不知道每个Place
的{{1}},则不需要占用大量空行空间。
<强>许多对多强>
每个Publisher
也有一个或多个Book
个。但是,Author
可能已写入多个Author
,因此它们处于多对多关系中。
如果您仍需要一些指导,建议您查看the model chapter of the Django Book。