我已经阅读了很多关于什么是 OneToOneField、ManyToManyField 和外键的帖子,但它们不是很清楚。我对 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)
一对多/外键
每本 Book
都有一个 Publisher
,但是一个 Publisher
可能已经出版了多本书。因此,它们是一对多(图书到出版商)的关系。
一对一
每个Publisher
都位于一个Place
中,每个Place
只能容纳一个Publisher
。因此,它们处于一对一的关系中。您可以将 Place
信息(address
和 country
)与 Publisher
模型放在一个表中, 但有时最好有单独的模型。例如,如果您不知道每个 Publisher
的 Place
,则不需要用空行占用大量空间。
多对多
每本 Book
也有一个或多个 Author
。但是,一个 Author
可能写了多本 Book
,因此它们处于多对多关系中。
如果您仍然需要一些指导,我建议您查看 the model chapter of the Django Book .
关于python - Django OneToOneField,ManyToManyField,外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24919638/