Сортировка данных сериализатора по группам DJANGO RESTFRAMEWORK

Как получить отсортированные данные сериализатора по группам в DJANGO RESTFRAMEWORK?

Моя модель:

class VariantCombination(models.Model):
    product = models.ForeignKey(Product, related_name='variant', on_delete=models.CASCADE, null=True,
                                verbose_name="Продукт")
    variant = models.ForeignKey(Variant, on_delete=models.CASCADE, null=True, blank=False, verbose_name="Варианты")
    variant_value = models.ForeignKey(VariantValue, on_delete=models.CASCADE, null=True, blank=False, verbose_name="Значение варианты")
    price = models.FloatField(default=None, verbose_name="Цена", null=True, blank=False)


    class Meta:
        verbose_name = "Вариант"
        verbose_name_plural = "Варианты"

    def __str__(self):
        return self.product.name

Мой серийник:

# Variant Combination Serializer
class VariantCombinationSerializer(serializers.ModelSerializer):
    variant_name_id = serializers.IntegerField(source="variant.id", read_only=True)
    variant_name = serializers.CharField(source="variant.name", read_only=True)
    variant_value = serializers.CharField(source="variant_value.value", read_only=True)                 
    product_id = serializers.IntegerField(source="product.id", read_only=True)
    category_id = serializers.IntegerField(source="product.category.id", read_only=True)

    class Meta:
        model = VariantCombination
        fields = ['id', 'variant_name_id', 'variant_name', 'variant_value', 'price', 'product_id', 'category_id']
        


# Product serializer
class ProductSerializer(serializers.ModelSerializer):
    category_id = serializers.IntegerField(source="category.id", read_only=True)
    category_name = serializers.CharField(source="category.name", read_only=True)
    brand_id = serializers.IntegerField(source="brand.id", read_only=True)
    brand_name = serializers.CharField(source="brand.name", read_only=True)
    currency_id = serializers.CharField(source="currency.id", read_only=True)
    currency = serializers.CharField(source="currency.name", read_only=True)
    images = ProductsImageSerializer(many=True, read_only=True)
    uploaded_images = serializers.ListField(
        child=serializers.ImageField(allow_empty_file=False, use_url=False),
        write_only=True
    )
    product_variant = ProductVariantSerializer(source="product", many=True)
    variants = VariantCombinationSerializer(source="variant", many=True)


    class Meta:
        model = Product
        fields = ['id', 'category_id', 'category_name', 'brand_id', 'brand_name', 'currency_id',
                'currency', 'uploaded_images', 'name', 'description',  
                'is_available', 'create_time', 'update_time', 'image', 'images', 'product_variant', 'variants']

Мой результат сейчас:

 "variants": [
        {
            "id": 1,
            "variant_name_id": 1,
            "variant_name": "Емкость",
            "variant_value": "256GB",
            "price": 19.0,
            "product_id": 3,
            "category_id": 1
        },
        {
            "id": 2,
            "variant_name_id": 1,
            "variant_name": "Емкость",
            "variant_value": "480GB",
            "price": 23.0,
            "product_id": 3,
            "category_id": 1
        },
        {
            "id": 3,
            "variant_name_id": 1,
            "variant_name": "Емкость",
            "variant_value": "512GB",
            "price": 31.0,
            "product_id": 3,
            "category_id": 1
        },

Мне нужен результат:

"variants": [
    {
        "variant_name_id": 1,
        "variant_name": "Емкость",
        "variations": [
            {
                "id": 1,
                "variant_name_id": 1,
                "variant_name": "Емкость",
                "value": "256GB",
                "price": 19.0,
                "product_id": 1,
                "category_id": 1
            },
            {
                "id": 2,
                "name": "Емкость",
                "value": "480GB",
                "price": 29.0,
                "product_id": 1,
                "category_id": 1
            },
            {
                "id": 3,
                "name": "Емкость",
                "value": "512GB",
                "price": 31.0,
                "product_id": 1,
                "category_id": 1
            },

Сортировка данных сериализатора по группам DJANGO RESTFRAMEWORK

Я хочу сортировать данные по серийнику группы. Я хочу сортировать по данным группового серийника. Я хочу сортировать по групповым серийным данным. Я хочу сортировать по групповым серийным данным.

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