Ran*_*ang 4 django many-to-many model foreign-keys
我似乎对 Django 的 ForeignKey 和 ManyToManyField 感到困惑。假设我有以下两个模型:
class Author(models.Model):
name = models.CharField(...)
class Paper(models.Model):
title = models.CharField(...)
Run Code Online (Sandbox Code Playgroud)
一篇论文可能有多个作者。我可以执行以下任一操作:
a)authors在实例中添加字段Paper并将作者添加到Paper实例中:
authors = models.ManyToManyFields(Author)
Run Code Online (Sandbox Code Playgroud)
b) 或者,我可以创建另一个包含论文作者的模型:
class PaperAuthor(models.Model):
paper = models.ForeignKey(Paper)
author = models.ForeignKey(Author)
Run Code Online (Sandbox Code Playgroud)
以上两个哪个是正确的?
在MySQL级别,
Django 为多对多字段创建一个单独的表。
class PaperAuthor(models.Model):
paper = models.ForeignKey(Paper)
author = models.ForeignKey(Author)
tablename : app_paperauthor
select * from app_paperauthor;
| id | paper_id | author_id |
| 1 | 1 | 1 |
| 2 | 2 | 2 |
Run Code Online (Sandbox Code Playgroud)
多对多字段创建一个如下表。
class Paper(models.Model):
title = models.CharField(...)
authors = models.ManyToManyField(Author)
tablename : app_paper_authors
select * from app_paper_authors;
| id | paper_id | author_id |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
Run Code Online (Sandbox Code Playgroud)
所以区别在于表app_paperauthor和app_paper_authors的名称。
| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |