- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经阅读了很多关于什么是 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/
我有一个模型,我想在其中为 manytomanyfield 的计数创建排名。只有它需要一个整数字段而不是一个 manytomany 字段。我的投票有问题__lt。 最好的做法是创建一个计算选票的 vo
假设我有两个 Django 应用程序: competitions - 将处理比赛数据 entries - 将处理与让参赛者参加比赛相关的功能 在比赛应用程序中,我有一个代表比赛部分的模型: class
在我的项目中,我有 2 个模型,它们具有相互指向的 ManyToMany 字段。在这种情况下,我有选举和候选人。这个想法是一个选举可以有多个候选人,一个候选人也可以是多个选举的一部分(一个“候选人”只
我正在使用 Django 的 ManyToManyField,当我尝试向其中添加数据时,出现以下错误: Traceback (most recent call last): File "", li
在 django 模型中我需要过滤 ManyToManyField有条件的 STATUS_CHOICES=( ('ACTIVE', 'Active'), ('INACTIVE', 'Inact
我读了documentation about many-to-many relationships和 examples .我找不到关于在何处放置 ManyToManyField 的提示。就我而言,我有
我需要创建一个有一些选项的 manytomany 字段,然后在每个选项旁边有一个额外的字段 我的模型: class Subject(models.Model): name = models.C
我有两个模型,产品和类别以及产品中的多对多字段。 类别在 ProductCreate View 中显示为键。 我需要为类别自定义小部件和字段。 我检查了 Django 源字段和小部件,但没有看到 Ma
我正在尝试在 Django 中使用 ModelForms 将内容添加到我的数据库中,其中包括一个 ManyToManyField。这是我的模型的相关部分: class Category(models.
我想在创建实例时更新字段,我尝试过 signals但对 ManyToManyField 来说似乎很复杂 class MobileCustomer(models.Model): customer
我正在尝试创建一个表示图形节点的模型。 class Node(models.model): ins = models.ManyToManyField("self", null=True, bl
我正在尝试创建一个表示图形节点的模型。 class Node(models.model): ins = models.ManyToManyField("self", null=True, bl
我有带有 M2M 字段的用户配置文件模型 class Account(models.Model): ... friends = models.ManyToManyField('self
我知道我不可能是第一个问这个问题的人,但我找不到答案,所以请不要吃掉我。 如果我有一个模型,其字段是ManyToManyField;我知道我可以在保存之前获取所选对象,但如果所选对象已更改,则这没有帮
我有一个遗留数据库,其中包含文档和作者的表格。第三个表定义了文档和作者之间的有序多对多关系,使用文档和作者的外键以及一个整数来指定给定文档的作者顺序。 使用 Django 1.1.1(或 SVN),有
我有一个这样的结构: 1. 作者 2. 预订 3.作者类型 4. 作者图书类型 一本书可以有多个作者,并且它可以在书中具有以下功能,例如:“作者”,“共同作者”,“部分”,“帮助者”等: class
以下是我的例子: models.py: class Example(models.Model): title = models.CharField(...) description =
Django ManyToManyField 在 HTML 中呈现如下内容: Question 1, Answer 1 Question 1, Answer 2 Que
如标题所述,manytomanyfield 和 through 如何出现在管理站点中? class SchoolClass(models.Model): id = models.AutoFie
我的 Django 项目中有这些模型: class Area(models.Model): name = models.CharField(max_length=100, primary_ke
我是一名优秀的程序员,十分优秀!