Skip to content

yavia/django-namedtuples

Repository files navigation

Django Namedtuples

Travis CI build FOSSA Status

This library allows to select django models in form of namedtuples.

Namedtuples are immutable and memory efficient, although their field access is usually 2-3 times slower than for regular classes.

The main purpose of this library is to allow to cache django models in a safe and and memory efficient way.

Usage:

from django_namedtuples import patch_django_queryset
from models import Car

patch_django_queryset()



car = Car.objects.all().namedtuples(
    'id', 'make', 'model', 'color'
)[0]

print car  # CarTuple(id=100, make='BMW', model='X6', color='black')
print car.id  # 100
print car[1]  # BMW
car.color = 'white'  # AttributeError: can't set attribute



second_car = Car.objects.all().namedtuples(
    'id', 'make', 'model', 'color',
    computational={
        'country': lambda row: 'Germany' if row[1] == 'BMW' else 'Unknown',
        'constant_attr': 100
    }
).get(id=200)

print second_car
# CarTuple(id=100, make='BMW', model='X6', color='white', country='Germany', constant_attr=100)

License

FOSSA Status

About

Namedtuples queryset for Django ORM

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages