Roman Mazhuts
Roman Mazhuts

Reputation: 33

Bulk set properties to django queryset

I have model like this:

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

where get_issue_status goes to api and take status. But api can bulk return statuses and i want to use it when get queryset of MyModel. So i write own manager:

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

It works nice for getting all objects. But when i try to filter queryset - status property for every object is None. How can i fix that? Thank.

Upvotes: 3

Views: 315

Answers (1)

Ohad the Lad
Ohad the Lad

Reputation: 1929

I think you want to override your get_queryset function, something like:

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

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

Upvotes: 1

Related Questions