欢迎访问宙启技术站
智能推送

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属性来访问与之关联的书籍。