Мне нужно использовать список одного сериализатора модели в другом, я попытался использовать SerializerMethodField()
, но не удалось.
Итак, у меня есть следующие коды:
models.py
class TyresGroup(models.Model):
code = models.CharField("Наименование группы колес", max_length=50)
brand = models.CharField("Бренд", max_length=50)
class Meta:
verbose_name = "Группа колёс"
verbose_name_plural = "Группы колёс"
def get_image_filename(instance, filename):
code = instance.tyres_group.code
slug = slugify(code)
return "post_images/%s-%s" % (slug, filename)
class Images(models.Model):
tyres_group = models.ForeignKey(TyresGroup, default=None, on_delete=models.CASCADE)
image = models.ImageField(upload_to=get_image_filename, verbose_name='Image')
class Meta:
verbose_name = "Фотография"
verbose_name_plural = "Фотографии"
class Tyre(models.Model):
group = models.ForeignKey(TyresGroup, blank=True, on_delete=models.CASCADE)
images = models.ManyToManyField(Images, related_name='tyresgroup', blank=True)
type = models.CharField("Тип колеса", max_length=2, choices=TYRE_TYPES)
code = models.CharField("Код протектора", max_length=10)
title = models.CharField("Название", max_length=30)
width = models.CharField('Ширина', max_length=5, choices=WIDTH)
height = models.CharField('Высота', max_length=5, choices=HEIGHT)
radius = models.CharField('Радиус', max_length=5, choices=RADIUS)
speed_index = models.IntegerField('Индекс скорости')
tread_depth = models.IntegerField('Глубина протектора')
standard = models.FloatField('Какой-то стандарт')
oa_dia = models.IntegerField("OA DIA")
max_pressure = models.IntegerField('Максимальное давление(КРА/PSI)')
certificate = models.CharField('Сертификат качества', max_length=5)
distance = models.IntegerField("Преодолимая дистанция колёс")
max_loading = models.IntegerField("Максимальная нагрузка")
class Meta:
verbose_name = "Колесо"
verbose_name_plural = "Колёса"
и serializers.py:
class TyreSerializer(serializers.ModelSerializer):
images = ImagesSerializer(many=True)
class Meta:
model = Tyre
fields = '__all__'
class TyresGroupSerializer(serializers.ModelSerializer):
# tyres = serializers.SerializerMethodField()
# def get_tyres(self, instance):
# queryset = Tyre.objects.all()
# return queryset
class Meta:
model = TyresGroup
fields = ['id', 'code', 'brand'] #, 'tyres']
Что я хочу получить:
[
{
"id": 1,
"group": "VH200",
"brand": "Aventus",
"tyres": [
{
"id": 1,
"group": 1,
"images": [...],
"type": "Л",
...etc
},
{
"id": 2,
"group": 1,
"images": [...],
"type": "Л",
...etc
}
]
},
...etc
]
Что у меня сейчас:
[
{
"id": 1,
"group": "VH200",
"brand": "Aventus"
},
{
"id": 2,
"group": "VH201",
"brand": "Columbus"
}
...etc
]