Пример #1
0
    def test_add_model_field(self):
        album = Album.objects.get(pk=1)
        result = {
            f.attname: getattr(album, f.attname) for f in album._meta.fields
        }
        result['another_field'] = '1'

        key = cache_keys.key_of_model(Album, pk=1)
        cache.set(key, result)
        key = cache_keys.key_of_model_list(Album, artist="Taylor Swift")
        cache.set(key, [result])

        album = cache.get_model(Album, pk=1)
        self.assertRaises(AttributeError, lambda: album.another_field)
Пример #2
0
    def test_add_model_field(self):
        album = Album.objects.get(pk=1)
        result = {
            f.attname: getattr(album, f.attname)
            for f in album._meta.fields
        }
        result['another_field'] = '1'

        key = cache_keys.key_of_model(Album, pk=1)
        cache.set(key, result)
        key = cache_keys.key_of_model_list(Album, artist="Taylor Swift")
        cache.set(key, [result])

        album = cache.get_model(Album, pk=1)
        self.assertRaises(AttributeError, lambda: album.another_field)
Пример #3
0
 def get_model_list(self, cls, **kwargs):
     ''' get multiple models in one key
     '''
     key = cache_keys.key_of_model_list(cls, **kwargs)
     models = self.get(key)
     if models:
         fields = set([f.attname for f in cls._meta.fields])
         for model in models:
             attrs_keys = set(model.keys())
             diff = attrs_keys - fields
             for key in diff:
                 model.pop(key)
         return [cls(**model) for model in models]
     models = list(cls.objects.filter(**kwargs))
     data = [self.get_attrs(m) for m in models]
     self.set(key, data)
     return models
Пример #4
0
 def get_model_list(self, cls, **kwargs):
     ''' get multiple models in one key
     '''
     key = cache_keys.key_of_model_list(cls, **kwargs)
     models = self.get(key)
     if models:
         fields = set([f.attname for f in cls._meta.fields])
         for model in models:
             attrs_keys = set(model.keys())
             diff = attrs_keys - fields
             for key in diff:
                 model.pop(key)
         return [cls(**model) for model in models]
     models = list(cls.objects.filter(**kwargs))
     data = [self.get_attrs(m) for m in models]
     self.set(key, data)
     return models
Пример #5
0
 def _make_model_list_key(self, instance, *args):
     kwargs = dict([(field, getattr(instance, field)) for field in args])
     key = cache_keys.key_of_model_list(instance.__class__, **kwargs)
     return key
Пример #6
0
 def set_model_list(self, cls, models=None, **kwargs):
     key = cache_keys.key_of_model_list(cls, **kwargs)
     if models is None:
         models = list(cls.objects.filter(**kwargs))
     data = [self.get_attrs(m) for m in models]
     self.set(key, data)
Пример #7
0
 def _make_model_list_key(self, instance, *args):
     kwargs = dict([(field, getattr(instance, field)) for field in args])
     key = cache_keys.key_of_model_list(instance.__class__, **kwargs)
     return key
Пример #8
0
 def set_model_list(self, cls, models=None, **kwargs):
     key = cache_keys.key_of_model_list(cls, **kwargs)
     if models is None:
         models = list(cls.objects.filter(**kwargs))
     data = [self.get_attrs(m) for m in models]
     self.set(key, data)