diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-19 19:35:51 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-19 19:35:51 +0100 |
commit | 1a56bf8cfa9c290f504d0998b4c9ec50148c84d7 (patch) | |
tree | c97a7da6846c58f57066ae542c1109b1435e627d | |
parent | 233b380423ad58fae0224520d2c5ab51ecaf8f62 (diff) | |
download | Ishtar-1a56bf8cfa9c290f504d0998b4c9ec50148c84d7.tar.bz2 Ishtar-1a56bf8cfa9c290f504d0998b4c9ec50148c84d7.zip |
Improve get_item
Manage associated (sub) models for query
-rw-r--r-- | ishtar_common/views.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index c03870935..961ff680c 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -188,7 +188,7 @@ HIERARCHIC_FIELDS = ['periods', 'period', 'unit', 'material_type', PRIVATE_FIELDS = ('id', 'history_modifier', 'order') def get_item(model, func_name, default_name, extra_request_keys=[], base_request={}, bool_fields=[], reversed_bool_fields=[], - dated_fields=[]): + dated_fields=[], associated_models=[]): """ Generic treatment of tables """ @@ -202,6 +202,13 @@ def get_item(model, func_name, default_name, extra_request_keys=[], request_keys = dict([(field.name, field.name + (hasattr(field, 'rel') and field.rel and '__pk' or '')) for field in fields]) + for associated_model, key in associated_models: + associated_fields = [associated_model._meta.get_field_by_name(k)[0] + for k in associated_model._meta.get_all_field_names()] + request_keys.update(dict([(key + "__" + field.name, + key + "__" + field.name + (hasattr(field, 'rel') and + field.rel and '__pk' or '')) + for field in associated_fields])) request_keys.update(extra_request_keys) request_items = request.method == 'POST' and request.POST or request.GET dct = base_request.copy() |