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