I have to models as below:
class PositionModel(BaseModel):
"""
User Position/Designation Model
"""
name = models.CharField(max_length=255)
class Meta:
ordering = ["created_at"]
def __str__(self):
return f"{self.name}"
class SuperiorModel(BaseModel):
"""
Super model for position
"""
position = models.OneToOneField(PositionModel, on_delete=models.CASCADE, related_name='position_superior')
superior = models.ManyToManyField(PositionModel, blank=True)
def __str__(self):
return f'{self.position.name}'
Signals:
@receiver(post_save, sender=PositionModel)
def create_position_instances(sender, instance, created, **kwargs):
if created:
SuperiorModel.objects.create(
position=instance
)
@receiver(post_save, sender=PositionModel)
def save_position_instances(sender, instance, **kwargs):
instance.position_superior.save()
What I want here is to create position with superior model.
My expected payload for post is this:
{
"name": "test position",
"superior": [1,2] # <-- Could be empty array if there is no superior
}
So that when I creates a position the superior value could be created in the SuperiorModel.
Also in the get method I want to get the data same as the payload.