📜  django 获取子元素 - Python (1)

📅  最后修改于: 2023-12-03 15:00:27.392000             🧑  作者: Mango

Django 获取子元素

在 Django 中,我们可以使用内置的 ORM 对象关系映射来获取子元素。在具有多对多关系的模型中,我们可以使用 related_name 属性来获取子元素。

获取单个子元素

对于单个子元素,我们可以使用 OneToOneFieldForeignKey 来获取。例如,我们有一个 Article 模型和一个 Author 模型,每个文章都有一位作者。我们可以这样获取文章的作者:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    author = models.OneToOneField(Author, on_delete=models.CASCADE)

class Author(models.Model):
    name = models.CharField(max_length=50)
    bio = models.TextField()

article = Article.objects.get(id=1)
author = article.author
获取多个子元素

对于多个子元素,我们可以使用 ManyToMany 字段。例如,我们有一个 Book 模型和一个 Author 模型,每个书籍有多位作者。我们可以这样获取书籍的作者:

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)

class Author(models.Model):
    name = models.CharField(max_length=50)
    bio = models.TextField()

book = Book.objects.get(id=1)
authors = book.authors.all()

在上面的例子中,我们使用了 all() 方法来获取所有的作者。如果我们只想获取一部分作者,可以使用 filter()exclude() 方法。

# 获取姓张的作者
authors_with_zhang = book.authors.filter(name__startswith='张')

# 获取非姓张的作者
authors_without_zhang = book.authors.exclude(name__startswith='张')

以上就是 Django 中获取子元素的方法。我们可以根据模型之间的关系选择不同的方法来获取子元素。