`django-composition` provides the abstract way to denormalize data from your models in simple declarative way through special generic model field called `CompositionField`
Project description
`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`
Project details
Release history Release notifications | RSS feed
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 |