Archived
This project has been archived by its maintainers, and is no longer receiving any updates.
`django-composition` provides the abstract way to denormalize data from your models in simple declarative way through special generic model field called `CompositionField`.
Most cases of data denormalization are pretty common so `django-composition` has several "short-cuts" fields that handles most of them.
## Base concept
`CompositionField` is django model field that provides interface to data denormalization.
`CompositionField` constructor params:
- native - Django field instance for current compostion field
- trigger - one or some numberr of triggers that handle composition.
Trigger is a dict with allowed keys:
- on - signal or list of signals that this field handles
- do - signals handler, with 3 params:
- related instance
- instance (that comes with signal send)
- concrete signal (one from `on` value)
- field_holder_getter - function that gets instance(that comes with signal send)\
as parameter and returns field holder
object (related instance)
- sender - signal sender
- sender_model - model instance or model name that send signal
- commit - flag that indicates save instance after trigger appliance or not
- commons - a trigger like field with common settings
for all given triggers
- update_method - dict for customization of update_method. Allowed params:
- initial - initial value to field before applince of method
- do - index of update trigger or trigger itself
- queryset - query set or callable(with one param - `instance` of an holder model)
that have to retun something iterable
- name - custom method name instead of `update_FOO`
## Short-cuts
Here is the list of provided short-cut fields:
- `ForeignAttributeField`
- `ChildsAggregationField`
- `AtributesAggregationField`
Most cases of data denormalization are pretty common so `django-composition` has several "short-cuts" fields that handles most of them.
## Base concept
`CompositionField` is django model field that provides interface to data denormalization.
`CompositionField` constructor params:
- native - Django field instance for current compostion field
- trigger - one or some numberr of triggers that handle composition.
Trigger is a dict with allowed keys:
- on - signal or list of signals that this field handles
- do - signals handler, with 3 params:
- related instance
- instance (that comes with signal send)
- concrete signal (one from `on` value)
- field_holder_getter - function that gets instance(that comes with signal send)\
as parameter and returns field holder
object (related instance)
- sender - signal sender
- sender_model - model instance or model name that send signal
- commit - flag that indicates save instance after trigger appliance or not
- commons - a trigger like field with common settings
for all given triggers
- update_method - dict for customization of update_method. Allowed params:
- initial - initial value to field before applince of method
- do - index of update trigger or trigger itself
- queryset - query set or callable(with one param - `instance` of an holder model)
that have to retun something iterable
- name - custom method name instead of `update_FOO`
## Short-cuts
Here is the list of provided short-cut fields:
- `ForeignAttributeField`
- `ChildsAggregationField`
- `AtributesAggregationField`
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-composition-0.2.tar.gz.
File metadata
- Download URL: django-composition-0.2.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d25f933b942ac14fed157ed3ef47cf8b427cf51964f3e6745c3a7869cfad3af6
|
|
| MD5 |
ece323cc472df4429f0c837d58c220c2
|
|
| BLAKE2b-256 |
9996974ccd35623cf2d96096b029413e653f18ef8307df4a3ab8655e7978eead
|