如何通过重用模型实例而不执行其他数据库查询来创建django查询集?

时间:2018-02-26 13:26:07

标签: django django-queryset

在我的项目中,我有以下设置。它有Project和EntryStatus模型。每个项目都有自己的状态集。当用户创建新项目时,我必须为此项目创建默认状态。

以下是我的模特经理的代码。

class EntryStatusManager(models.Manager):
    def create_default_for_project(self, project: Project):
        for status in self.get_queryset().filter(project=None):
            status.id = None
            status.project = project
            status.save()

我想从此方法返回一个包含所有已创建状态的查询集。最简单的解决方案是像这样进行额外的查询

def create_default_for_project(self, project: Project):
    created_ids = []
    for status in self.get_queryset().filter(project=None):
        status.id = None
        status.project = project
        status.save()
        created_ids.append(status.id)
    return self.get_queryset().filter(id__in=created_ids)

但有没有办法避免进行额外的查询并只是重用已创建的模型实例?

0 个答案:

没有答案