Можно ли создать объект , когда я создал другой объект в Django?
Да, вы можете, у вас есть два варианта:
1) Опция 1 : переопределение сохранения ( переопределение предопределенных методов модели )
from django.db import models
class AnotherModel(models.Model):
model = models.ForeignKey(Model, on_delete=models.CASCADE)
description = models.TextField()
def save(self, *args, **kwargs):
if self.pk is None: # create
self.model = Model.objects.create( name = "some random name" )
super().save(*args, **kwargs) # Call the "real" save() method.
2) Опция 2 : Использование сигнала предварительного сохранения :
from django.db.models.signals import pre_save
from django.dispatch import receiver
@receiver(pre_save, sender=AnotherModel)
def my_handler(sender, **kwargs):
if sender.pk is None: # create
sender.model = Model.objects.create( name = "some random name" )
Важно
Связанную модель необходимо создать перед сохранением текущей. В примерах я использовал:
Model.objects.create( name = "some random name" )
Но вы можете создать модель обычным способом:
m = Model()
m.name = "random name"
m.save() # <--- important!