Перенос продуктов вместе с отношениями категорий django

Я создал следующие отношения для продуктов и категорий.

class Category(models.Model):
    DoesNotExist = None
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(verbose_name='category name', max_length=50)
    slug = models.SlugField()
    parent = models.ForeignKey('self', blank=True, null=True, related_name='children', on_delete=models.CASCADE)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        full_path = [self.name]
        k = self.parent
        while k is not None:
            full_path.append(k.name)
            k = k.parent
        return ' -> '.join(full_path[::-1])

    class Product(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    product_name = models.CharField(verbose_name='product_name', null=False, max_length=200)
    product_description = models.TextField(verbose_name='product description', null=False, max_length=1000)
    stock = models.IntegerField(verbose_name='stock', null=False)
    expire_date = models.DateTimeField(verbose_name='expire date')

    company = models.ForeignKey(Company, on_delete=models.CASCADE)
    store = models.ForeignKey(Store, blank=True, null=True, on_delete=models.SET_NULL)
    category = models.ForeignKey(Category, blank=True, null=True,  on_delete=models.SET_NULL)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.product_name

    def get_cat_list(self):
        k = self.category  # for now ignore this instance method

        breadcrumb = ["dummy"]
        while k is not None:
            breadcrumb.append(k.slug)
            k = k.parent
        for i in range(len(breadcrumb) - 1):
            breadcrumb[i] = '/'.join(breadcrumb[-1:i - 1:-1])
        return breadcrumb[-1:0:-1]

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

 [
   {
      "name":Cars,
      "slug":"cars",
      "subcategories":{
         "id":,
         "name":,
      }
   },
]

А класс представления будет таким

products = Product.objects.all()
    product_serializer = ProductSerializer(products, many=True)

    return Response({'data': products.data}, status=200)

Есть ли в django функциональность, благодаря которой, если у меня есть отношения с классом в нескольких моделях, я могу взять на себя все данные, с которыми у меня есть отношения?

Что-то подобное в laravel?

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