Django.db.models中如何定义模型之间的外键关系
发布时间:2023-12-25 12:20:34
在Django中,可以使用外键(ForeignKey)来定义模型之间的关系。外键是一种将一个模型与另一个模型关联起来的方法,它指向另一个模型的主键。
下面是一个使用外键的例子,假设有两个模型:Author(作者)和Book(书):
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
def __str__(self):
return self.title
在上面的例子中,Author模型有两个字段:name和email。Book模型有两个字段:title和author。Book模型的author字段是一个外键,它指向了Author模型,并使用models.CASCADE来定义级联删除。
在Author模型中,我们可以使用related_name参数来定义反向关系。related_name指定了在Author模型中的反向关系名称,允许我们通过作者对象访问相关的书籍。
创建外键关系后,可以通过以下方式使用它:
# 创建作者对象 author = Author.objects.create(name='John Doe', email='john@example.com') # 创建书籍对象,并设置作者 book = Book.objects.create(title='Django for Beginners', author=author) # 通过书籍对象访问作者 print(book.author) # 输出:John Doe # 通过作者对象访问书籍 print(author.books.all()) # 输出:<QuerySet [<Book: Django for Beginners>]>
在上面的代码中,我们首先创建了一个作者对象,并设定了name和email属性。然后,我们创建了一本书,使用外键将它与作者对象关联起来。我们可以通过书籍对象的author属性来访问对应的作者对象,通过作者对象的books属性来访问与之关联的书籍。
