我正在尝试在Django rest模型中添加OneToMany字段。但是Django没有为此提供选择。谁能在Django框架中建议类似于java @OneToMany的东西
答案 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')