Django 何时使用自定义模型管理器?

Django 何时使用自定义模型管理器?,django,django-models,django-managers,Django,Django Models,Django Managers,现在我正在阅读有关自定义管理器的内容,在执行CRUD操作(如Create)时,可以使用这些管理器添加额外的逻辑。创建一个自定义管理器类,然后使用自定义管理器类的实例初始化表类的objects属性 我还了解到,您还可以使用pre_save和post_save信号向save操作添加额外的保存逻辑。我的问题是:什么时候应该在信号上使用自定义管理器类?自定义管理器的使用是否比模型类的默认管理器慢 谢谢好的,这是我之前写的一篇。我删掉了很多不相关的东西,希望所有的必需品都能保留下来。您需要知道有一个外键链

现在我正在阅读有关自定义管理器的内容,在执行CRUD操作(如Create)时,可以使用这些管理器添加额外的逻辑。创建一个自定义管理器类,然后使用自定义管理器类的实例初始化表类的
objects
属性

我还了解到,您还可以使用pre_save和post_save信号向save操作添加额外的保存逻辑。我的问题是:什么时候应该在信号上使用自定义管理器类?自定义管理器的使用是否比模型类的默认管理器慢


谢谢

好的,这是我之前写的一篇。我删掉了很多不相关的东西,希望所有的必需品都能保留下来。您需要知道有一个外键链
PRSBlock
->
PRS2
->
作业线
->
说明
。使用此选项,所有对
PRSBlock.objects.filter的查询(…
将返回
PRSBlock
对象,这些对象带有额外的字段
薄膜
基底
材料
,这些对象是通过遵循此链找到的
描述
中的对象。与该链上的大多数其他内容不同,它们几乎总是需要的。
选择相关
将更有用过度杀戮

class PRSBlock_Manager(models.Manager):   

    def get_queryset(self):
        return super().get_queryset().annotate(
            membrane_t = F('PRS__jobline__description__mt'), 
            substrate_t= F('PRS__jobline__description__ft'),
            material   = F('PRS__jobline__description__material')
        )

class PRSblock( models.Model):

    # override the default manager
    objects=PRSBlock_Manager()  # annotate always with description parametrs relevant to block LUTs

    PRS = models.ForeignKey( PRS2, models.CASCADE, related_name='prs_blocks')
    # and lots of other fields that aren't relevant

当你(几乎)总是想过滤/注释/…过滤/注释是什么意思?你有一本
,书的外键指向
作者
。你可以定义图书管理器,这样所有查询都可以用
作者名
重新注释,这比引用
作者更有效。name
@nigel222你能给出一个代码示例吗你想说什么?thx@FAM_Maurice好的,看看我的答案