djangfrozendata 0.1a1
Django Frozen Data
Django model custom field for storing a frozen snapshot of an object.
Principles
Behaves like a ForeignKey but the data is detached from the related object
Transparent to the client - it looks and behaves like the original object
The frozen object cannot be resaved
Supports nesting of objects
Usage
A frozen field can be declared like a ForeignKey:
class Foo:
frozen_bar = FrozenObjectField(Bar, help_text="This is a frozen snapshot of the object.")
fresh_bar = ForeignKey(Bar, help_text="This is a live FK relationship.")
The field behaves exactly like a FK, with the exception that the object cannot be saved:
>>> bar = Bar()
>>> foo = Foo.objects.create(frozen_bar=bar, fresh_bar=bar)
>>> # the fresh field can be updated as you would expect
>>> foo.fresh_bar.save()
>>> # the frozen field cannot - to prevent overwriting new data.
>>> foo.frozen_bar.save()
>>> StaleObjectError: 'Object was frozen; defrosted objects cannot be saved.'
Issues - TODO
Deserialization of DateField/DateTimeField values
Deserialization of DecimalField values
Deserialization of UUIDField values
Deep object freezing
Running tests
The tests themselves use pytest as the test runner. If you have installed the poetry evironment, you can run them thus:
$ poetry run pytest
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.