Safes a complete tree of django models - from bottom to top.
Project description
save_deep
This package first saves all the children of the given oject and then the object itself.
It solves the error:
ValueError: save() prohibited to prevent data loss due to unsaved related object '<<foreign_object>>'.
Note: it does not work (yet) with circular dependencies
Example
Say you have this this model
class Company(models.Model):
name = models.CharField(max_length=256)
class Employee(models.Model):
username = models.CharField(max_length=256)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
If you try to do
Employee(username='tom', company=Company(name='some-name')).save()
you get
ValueError: save() prohibited to prevent data loss due to unsaved related object '<<foreign_object>>'.
But if you use save_deep, the company is saved first, then the employee
employee = save_deep(Employee(username='tom', company=Company(name='some-name')))
This works with a deeply nested object-tree and with updates (and update/create-mixes) as well as long as there are no circular dependencies.
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
django_save_deep-0.0.2.tar.gz
(6.3 kB
view hashes)
Built Distribution
Close
Hashes for django_save_deep-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a7438604c09364ab3b5dd79b672544ae21da56b3b706031cbbc71e4135762ac0 |
|
MD5 | 51413b6c81026c5fff684f12531a9298 |
|
BLAKE2b-256 | ffd56d7266d1475efc8185bd6ac787c0ac300de75c16440c04224429692e3816 |