i'm trying to to do this:
from django.db import models
from django.db.models.query import QuerySet
class QuerySetManager(models.Manager):
def get_query_set(self):
return self.model.QuerySet(self.model)
def __getattr__(self, attr, *args):
return getattr(self.get_query_set(), attr, *args)
# like get_or_create without save
def get_or_new(self, defaults=None, **kwargs):
lookup, params = self.get_query_set()._extract_model_params(defaults, **kwargs)
try:
return self.get(**lookup), False
except self.model.DoesNotExist:
obj = self.model(**params)
return obj, True
an example model:
class Person(models.Model):
# fields...
objects = QuerySetManager()
class QuerySet(QuerySet):
# custom filter methods
pass
I want to use the _extract_model_params
to get the lookup
and params
dict, like those used in the get_or_create
method.
The problem is that self.get_query_set()
, even if is a QuerySet
class, doesn't have that method.
Why?
What version of Django are you using? That method doesn't appear to exist in 1.5 or even the 1.6 betas.