gpt4 book ai didi

django - 不要在 CustomManager.get_query_set() 中过滤!但是 all()、get()、filter()、exclude() 呢?

转载 作者:行者123 更新时间:2023-12-04 07:07:40 26 4
gpt4 key购买 nike

django's manager docs有一个被 DO NOT FILTER AWAY ANY RESULTS IN THIS TYPE OF MANAGER SUBCLASS 覆盖的段落,但在下文中仅提及 get_query_set()
在 all()、get()、filter()、exclude() 中过滤是否保存?

我想要这样做的原因:我想要自动管理器,因为它赋予我控制的权力,如 b-list: Write better template tags 中所述,将哪些行发送到模板标签

这段代码可以吗?

class ArticleMananger(models.Manager):
def get_query_set(self):
return super(ArticleMananger, self).get_query_set()
def all(self):
return super(ArticleMananger, self).filter(published=True)
def filter(self, **kwargs):
return super(ArticleMananger, self).filter(published=True).filter(**kwargs)
....

编辑:如果有人投反对票,解释原因会很好或公平。这个问题有什么问题?

最佳答案

我认为,这是一个警告,只是为了不覆盖 models.Manager 子类中的 get_query_set() 方法,如果此管理器获得模型的默认(对象)管理器,则无需进一步考虑 Django 本身使用此方法。否则,您可能会遇到难以调试的行为。

尝试将 print 语句添加到您的重写方法中,以查看其他应用程序(即管理应用程序)使用它们的时间和频率。

关于django - 不要在 CustomManager.get_query_set() 中过滤!但是 all()、get()、filter()、exclude() 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/874726/

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