Сортировка данных сериализатора по группам 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
Я хочу сортировать данные по серийнику группы. Я хочу сортировать по данным группового серийника. Я хочу сортировать по групповым серийным данным. Я хочу сортировать по групповым серийным данным.