在Django中,模型之间的关系是通过关联字段来定义的。Django提供了三种类型的关联:ForeignKey(一对多关系)、OneToOneField(一对一关系)和ManyToManyField(多对多关系)。
ForeignKey(一对多关系):在两个模型之间建立一对多的关系。例如,如果一个
Author
可以写多篇Article
,那么Article
模型应该有一个指向Author
模型的外键:from django.db import models class Author(models.Model): name = models.CharField(max_length=100) class Article(models.Model): author = models.ForeignKey(Author, on_delete=models.CASCADE) title = models.CharField(max_length=100)
- OneToOneField(一对一关系):在两个模型之间建立一对一的关系。例如,每个
UserProfile
只能对应一个User
,反之亦然:class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) phone = models.CharField(max_length=15)
ManyToManyField(多对多关系):在两个模型之间建立多对多的关系。例如,一个
Student
可以选多门Course
,一门Course
也可以被多个Student
选择:class Student(models.Model): name = models.CharField(max_length=100) class Course(models.Model): students = models.ManyToManyField(Student) name = models.CharField(max_length=100)
在Django中,这些关联字段不仅定义了模型之间的关系,还为反向查询提供了方便。例如,通过article.author
可以直接访问文章的作者,或者通过author.article_set.all()
获取某个作者的所有文章。