gpt4 book ai didi

python - 是否可以覆盖 Django 模型上的 .objects?

转载 作者:太空狗 更新时间:2023-10-29 21:19:03 25 4
gpt4 key购买 nike

我想在默认情况下只返回“已发布”实例 (published=True)。是否可以覆盖 .objects 以便 MyModel.objects.all() 实际上返回 MyModel.objects.filter(published=True)?

这合理吗?在我确实需要的极少数情况下,我如何获得未发表的文章?

最佳答案

您可以通过编写自定义 Manager 来完成此操作-- 只需覆盖 get_queryset 方法并将您的 objects 设置为 Manager 实例。例如:

class MyModelManager(models.Manager):
def get_queryset(self):
return super(MyModelManager, self).get_queryset().filter(published=True)

class MyModel(models.Model):
# fields
# ...

objects = MyModelManager()

参见 docs了解详情。如果这将是您通常的默认情况,那是明智的。要取消发布,请创建另一个管理器,您可以使用 MyModel.unpublished_objects 之类的东西访问它。同样,文档中有关于此类事情的示例。

关于python - 是否可以覆盖 Django 模型上的 .objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762524/

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