kmike / django-generic-images
This app provides image model (with useful managers, fields, utility methods and advanced admin image uploader) that can be attached to any other Django model using generic relations. License is MIT.
Clone this repository (size: 966.0 KB): HTTPS / SSH
$ hg clone http://bitbucket.org/kmike/django-generic-images/
| commit 72: | 29e726c972ae |
| parent 71: | 89ca35388cf9 |
| branch: | default |
| tags: | tip |
Support for select_related in RelatedInjector and GenericInjector
- View kmike's profile
-
kmike's public repos »
- django-contact-form-i18n-ru
- pymorphy
- django-composition
- django-filebrowser
- django-grappelli
- django-robokassa
- GearsUploader
- django-yandex-maps
- django-generic-images
- django-photo-albums
- django-view-cache-utils
- django-sociable
- django-faves
- django-autoslug
- django-contact-form-i18n
- django-coverage
- django-simplepagination
- django-orm-cache
- django-assist-ru
- Send message
3 months ago
Changed (Δ234 bytes):
raw changeset »
generic_utils/managers.py (8 lines added, 1 lines removed)
setup.py (1 lines added, 1 lines removed)
Up to file-list generic_utils/managers.py:
| … | … | @@ -17,7 +17,8 @@ class RelatedInjector(models.Manager): |
17 |
17 |
self.fk_field = fk_field |
18 |
18 |
super(RelatedInjector, self).__init__(*args, **kwargs) |
19 |
19 |
|
20 |
def inject_to(self, objects, field_name, get_inject_object = lambda obj: obj, |
|
20 |
def inject_to(self, objects, field_name, get_inject_object = lambda obj: obj, |
|
21 |
select_related = None, **kwargs): |
|
21 |
22 |
''' |
22 |
23 |
``objects`` is an iterable. Related objects |
23 |
24 |
will be attached to elements of this iterable. |
| … | … | @@ -29,6 +30,9 @@ class RelatedInjector(models.Manager): |
29 |
30 |
result of ``get_inject_object(obj)``. It is assumed that ``fk_field`` |
30 |
31 |
points to ``get_inject_object(obj)``. |
31 |
32 |
|
33 |
``select_related`` is a list to be passed to select_related method for |
|
34 |
related objects. |
|
35 |
||
32 |
36 |
All other kwargs will be passed as arguments to queryset filter function. |
33 |
37 |
|
34 |
38 |
For example, we need to prefetch user profiles when we display a list of |
| … | … | @@ -68,6 +72,9 @@ class RelatedInjector(models.Manager): |
68 |
72 |
kwargs.update({self.fk_field+'__in': [ get_inject_object(obj).pk for obj in objects ]}) |
69 |
73 |
|
70 |
74 |
data = self.get_query_set().filter(**kwargs) |
75 |
if select_related: |
|
76 |
data = data.select_related(select_related) |
|
77 |
||
71 |
78 |
data_dict = dict((getattr(item, self.fk_field), item) for item in list(data)) |
72 |
79 |
|
73 |
80 |
# add info to original data |
