批量设置属性为django queryset

时间:2015-06-12 13:06:16

标签: python django 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可以批量返回状态,我想在获取MyModel的查询集时使用它。 所以我写自己的经理:

class MyModelManager(models.Manager):
    def get_queryset(self):
        queryset = super(...).get_queryset()
        issues = self.bulk_get_issues()
        set_issue_statuses(queryset)
        return queryset

它适用于获取所有对象。但是当我尝试过滤queryset时 - 每个对象的status属性都是None。我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

我想你要覆盖你的get_queryset函数, 类似的东西:

def get_queryset(self, request):
    qs = super(...).get_queryset(request)

    the_filter = ["None", "", "SKIPPED", ]
    return qs.exclude(status__in=the_filter)