Django Rest Framework - Как сериализовать вложенные поляPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Django Rest Framework - Как сериализовать вложенные поля

Сообщение Anonymous »

У меня есть CustomerErializer , который использует обратные изображения поля иностранного ключа , чтобы вернуть все связанные изображения объекты.

Код: Выделить всё

class CustomerSerializer(serializers.ModelSerializer):

class Meta:
model = Customer
fields = ('id', 'name', 'images')
read_only_fields = ('id',)

class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields = ('id', 'name', 'customer')
read_only_fields = ('id',)
< /code>
Это то, что я получаю от ответа: < /p>
[
{
'id': 1,
'name': 'John Doe',
'images': [
1,
2,
3,
4,
...
]
}
...
]
Вопрос: Вместо того, чтобы просто показывать изображения в качестве списка идентификатора s, как я могу показать другое свойство, т.е. Имя ?
Желаемый результат будет:

Код: Выделить всё

[
{
'id': 1,
'name': 'John Doe',
'images': [
'foo.jpg',
'bar.jpg',
'foobar.jpg',
'lorem.jpg',
...
]
}
...
]
Моя первая попытка - я заменил обратные изображения иностранных ключей на image_names от serializermethodfield () , чтобы выбрать имя поля , но я получаю значение Null .
class CustomerSerializer(serializers.ModelSerializer):
image_names = serializers.SerializerMethodField()

def get_image_names(self, obj):
return obj.images.name

class Meta:
model = Customer
fields = ('id', 'name', 'image_names')
read_only_fields = ('id',)
< /code>

Дополнительная информация < /p>
Примеры модели: < /p>
class Customer(models.Model):
name = models.CharField()

class Image(models.Model):
name = models.CharField()
customer = models.ForeignKey(
Customer, related_name='images', on_delete=models.CASCADE)
< /code>

Пожалуйста, дайте мне знать, если что -то неясно, и я обновлю вопрос. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/634 ... ted-fields
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»