如何在Django中使用oneToMany

时间:2019-06-24 14:08:14

标签: django python-3.x

我正在尝试在Django rest模型中添加OneToMany字段。但是Django没有为此提供选择。谁能在Django框架中建议类似于java @OneToMany的东西

1 个答案:

答案 0 :(得分:0)

您可以在ForeignKey字段中使用related_name来实现此目的。 例如,您具有以下模型:

class Author(models.Model):
    name = models.CharField(max_length=128)


class Book(models.Model):
    name = models.CharField(max_length=128)
    author = models.ForeignKey(Author, related_name='books', on_delete=models.CASCADE)

现在,要访问作者的所有书籍,查询将为Author.books.all()。在这里,请注意Author模型没有books属性。但是在author模型的Author的ForeignKey字段(引用Book模型)中,有related_name参数,其值为 books 。这意味着可以从Author模型访问授权书。 Django处理得很好。

此外,您可以使用select_related进行优化(在这种情况下,您无需使用related_name参数):Book.objects.all().select_related('author')