gpt4 book ai didi

python - Django:在模型中创建子模型

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:59 25 4
gpt4 key购买 nike

假设我有两个模型,Book 和 Page,Page 和 Book 之间是一对多的关系。我希望每个 Book 模型都有一个函数,可以为各自的 Book 模型创建一堆 Pages,但我不确定如何将每个 Pages 的外键关联回创建它的 Book 实例。

我目前有一个关联功能,可以在所有可能的书籍中找到正确的书籍,我确信有更好的方法,但我似乎找不到。是否可以将外键设置为自身?

最佳答案

class Page(models.Model):
# default related_name would be `page_set` but `pages`
# seems a bit more intuitive, your choice.
book = models.ForeignKey("yourapp.Book", related_name="pages")


class Book(models.Model):
# ...

# you can use self as the instance and magically you have
# this `pages` attr which is a related manager, like `Page.objects`
# but limited to the particular Book's pages.
def special_page_create(self, *args, **kwargs):
self.pages.create(
# ...
)
# ...

然后,你有一个图书实例,你有一个相关的经理,

book = Book.objects.get(...
book.pages.create(...
page, created = book.pages.get_or_create(...
pages_gte_42 = book.pages.filter(num__gte=42)
# etc

让我知道您还需要知道什么。反向关系是半神奇的;您没有在 Book 类上声明任何内容,但您在 Book 实例上获得了相关的管理器。

关于python - Django:在模型中创建子模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12485733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com