将属性批量设置为 django queryset
Bulk set properties to django queryset
我有这样的模型:
class MyModel(models.Model):
#fields
def __init__(self, *args, **kwargs):
self._issue_status = None
super(...).__init__(...)
@property
def issue_status(self):
if self._issue_status is None:
self.get_issue_status()
return self._issue_status
其中 get_issue_status 转到 api 并取得地位。但是 api 可以批量 return 状态,我想在获取 MyModel 的查询集时使用它。
所以我写了自己的经理:
class MyModelManager(models.Manager):
def get_queryset(self):
queryset = super(...).get_queryset()
issues = self.bulk_get_issues()
set_issue_statuses(queryset)
return queryset
它很适合获取所有对象。但是当我尝试过滤查询集时 - 每个对象的状态 属性 是 None。我该如何解决?谢谢
我想你想覆盖你的 get_queryset 功能,
类似于:
def get_queryset(self, request):
qs = super(...).get_queryset(request)
the_filter = ["None", "", "SKIPPED", ]
return qs.exclude(status__in=the_filter)
我有这样的模型:
class MyModel(models.Model):
#fields
def __init__(self, *args, **kwargs):
self._issue_status = None
super(...).__init__(...)
@property
def issue_status(self):
if self._issue_status is None:
self.get_issue_status()
return self._issue_status
其中 get_issue_status 转到 api 并取得地位。但是 api 可以批量 return 状态,我想在获取 MyModel 的查询集时使用它。 所以我写了自己的经理:
class MyModelManager(models.Manager):
def get_queryset(self):
queryset = super(...).get_queryset()
issues = self.bulk_get_issues()
set_issue_statuses(queryset)
return queryset
它很适合获取所有对象。但是当我尝试过滤查询集时 - 每个对象的状态 属性 是 None。我该如何解决?谢谢
我想你想覆盖你的 get_queryset 功能, 类似于:
def get_queryset(self, request):
qs = super(...).get_queryset(request)
the_filter = ["None", "", "SKIPPED", ]
return qs.exclude(status__in=the_filter)