Как сделать обратную вложенную сериализацию, когда у нас есть поле ManytoMany в отношении? Используя DRF

моя модель данных выглядит как

''' class Rack(models.Model):

rack_id = models.CharField(primary_key=True,max_length=30, verbose_name="Rack Id")
rack_set        = models.ForeignKey(RackSet, on_delete=models.CASCADE, related_name='wh_rack_set', verbose_name="Rack Set")

class Meta:
    db_table =  "rw_rack"

def __str__(self):
    return self.rack_name

class RackBay(models.Model):

bay_id = models.CharField(primary_key=True,max_length=30, verbose_name="Bay Id")
rack            = models.ForeignKey(Rack, on_delete=models.CASCADE, related_name='wh_rack', verbose_name="Rack")
class Meta:
    db_table = "rw_bay"

def __str__(self):
    return self.bay_name

class RackShelf(models.Model):

shelf_id = models.CharField(primary_key=True,max_length=50, verbose_name="Shelf Id")
bay           = models.ForeignKey(RackBay, on_delete=models.CASCADE, related_name='wh_rack_bay', verbose_name="Bay")

class Meta:
    db_table ="rw_shelf"

def __str__(self):
    return self.shelf_name

class RackBin(models.Model):

bin_id = models.CharField(primary_key=True,max_length=50, verbose_name="Bin Id")

class Meta:
    db_table = "rw_bin"

def __str__(self):
    return self.bin_name

класс CargoWarehouseSurvey(models.Model):

job_id      = models.ForeignKey(WarehouseJob, on_delete=models.CASCADE, null=True, related_name='inputted_job_order', verbose_name="Job Id")
warehouse_locations      = models.ManyToManyField(WarehouseCell, help_text='Assigned warehouse locations for current survey job.', related_name='warehouse_locations_set')
rack_bin_locations       = models.ManyToManyField(RackBin, help_text='Assigned rack_bin locations for current survey job.', related_name='rack_bin_locations_set')

def __str__(self):
    return self.id

class Meta:
    db_table = 'warehouses_survey'
    ordering = ['id']

'''

Это моя модель данных, в CargoWarehouseSurvey есть связь бункеров с тем, что выбрано, мне нужно получить бункер, который относится к стойке, отсеку, полке, бункеру. например

Ожидаемый ответ:

"allotted_bins": [ { "rack_id": "A-1", "bays": [ { "bay_id": "B-1", "shelves": [ { "shelf_id": "S1", "bin_ids": [ "12343", "21232" ] }, { "shelf_id": "S2", "bin_ids": [ "43234", "42354" ] },

      ]
    }
  ]
}

] }

Вернуться на верх