django create secondary model on create
When working in Django if you have related models that require an on-create
feature to generate a child you can utilize the post_save
callbacks.
This is especially useful when we want to generate the secondary model using information largely irrelevant to the parent model.
One instance would be a User
model parent that has a child model holding its
state. This state could be a Profile
of additional information, some sort of
Organization
model that has account payment status, etc.
By generating this on User
create we would be able to have a secondary representation
of the User
without having to do any complex callbacks/checks to ensure they
have this data representation.
Ideally, we would be creating this child model with some default values.
@receiver(post_save, sender=User)
def create_your_model(sender, instance, created, **kwargs):
if created:
SomeModel.objects.create(your_foreign_key_field=instance)
@receiver(post_save, sender=User)
def save_your_model(sender, instance, **kwargs):
instance.somemodel.save()