From 97d7e647a304dbfe4ee10539949e7aa12e9e7982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mariusz=20Kry=C5=84ski?= Date: Mon, 27 May 2013 02:14:28 +0200 Subject: [PATCH] Fix for #41 --- cqlengine/models.py | 7 ++++++- cqlengine/tests/query/test_queryset.py | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cqlengine/models.py b/cqlengine/models.py index 61d00157..3753e7f7 100644 --- a/cqlengine/models.py +++ b/cqlengine/models.py @@ -26,6 +26,10 @@ class hybrid_classmethod(object): else: return self.instmethod.__get__(instance, owner) +class QuerySetDescriptor(object): + def __get__(self, obj, model): + return QuerySet(model) + class BaseModel(object): """ The base model class, don't inherit from this, inherit from Model, defined below @@ -34,6 +38,8 @@ class BaseModel(object): class DoesNotExist(QueryException): pass class MultipleObjectsReturned(QueryException): pass + objects = QuerySetDescriptor() + #table names will be generated automatically from it's model and package name #however, you can also define them manually here table_name = None @@ -266,7 +272,6 @@ class ModelMetaClass(type): #create the class and add a QuerySet to it klass = super(ModelMetaClass, cls).__new__(cls, name, bases, attrs) - klass.objects = QuerySet(klass) return klass diff --git a/cqlengine/tests/query/test_queryset.py b/cqlengine/tests/query/test_queryset.py index 5ce12b5e..1c3eb95b 100644 --- a/cqlengine/tests/query/test_queryset.py +++ b/cqlengine/tests/query/test_queryset.py @@ -479,3 +479,11 @@ class TestValuesList(BaseQuerySetUsage): item = q.values_list('expected_result', flat=True).first() assert item == 10 +class TestObjectsProperty(BaseQuerySetUsage): + + def test_objects_property_returns_fresh_queryset(self): + assert TestModel.objects._result_cache is None + len(TestModel.objects) # evaluate queryset + assert TestModel.objects._result_cache is None + +