Как вывести в REST API данные ForeingKey
Как мне вывести информацию о комнатах вместе с Фотографиями
Если я щас возьму модель Photo
то он покажет только id room
и сами фотографии
А как мне сделать так чтобы выводилась вся инфа с модели Rooms
model.py
class Rooms(models.Model):
room = models.BigIntegerField(verbose_name='Комната')
category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Категория', related_name='wer')
room_bool = models.BooleanField(verbose_name='Статус', default=True, editable=False)
price = models.BigIntegerField(verbose_name='Цена', editable=False,null=True)
def __str__(self):
return f"{self.room}"
class Meta:
verbose_name_plural = 'Номера'
verbose_name = 'Номер'
class Photo(models.Model):
room = models.ForeignKey(Rooms, on_delete=models.CASCADE, related_name='dasf', verbose_name="Номер")
photo = models.FileField(verbose_name='Фотография')
class Meta:
verbose_name_plural = 'Фотографии'
verbose_name = 'Фотографию'
serializers.py
class PhotoSer(serializers.ModelSerializer):
class Meta:
model = Photo
fields = '__all__'
HTTP Запрос
[
{
"room": 1,
"photo": "http://127.0.0.1:8000/backiee-189646.jpg"
},
{
"room": 1,
"photo": "http://127.0.0.1:8000/backiee-98662_kVz5Ddd.jpg"
},
{
"room": 1,
"photo": "http://127.0.0.1:8000/backiee-98662_OeCq01T.jpg"
}
]
serializers.py
class RoomSerializer(serializers.ModelSerializer):
class Meta:
model = Rooms
fields = '__all__'
По дефолту к полю room
будет применен тип PrimaryKeyRelatedField
В качестве поля можно указать другой сериализатор, но такой способ будет доступен только для чтения, что бы добавить возможность записи в базу, необходимо будет переопределить метод create
в сериализаторе.
class PhotoSerializer(serializers.ModelSerializer):
room = RoomSerializer(read_only=True, many=True)
class Meta:
model = Photo
fields = ('room', 'photo')