在我的项目中,我有以下设置。它有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)
但有没有办法避免进行额外的查询并只是重用已创建的模型实例?