Комната, соответствующая запросу, не существует. django rest framework, Django retsframework

Я новичок в django. В своем проекте я хочу разместить фото в отель и фото в номер отеля: но у меня возникает следующая проблема:Room matching query does not exist. django rest framework. Идентификатор номера не существует, хотя он существует в базе данных

В моем serializer.py

class RoomPictureSerializer(serializers.ModelSerializer):
 location = Base64ImageField(max_length=None, use_url=True)

class Meta:
    model = RoomPicture
    fields = ['id', 'room', 'location']


class RoomSerializer(serializers.ModelSerializer):
   roompicture = RoomPictureSerializer(many=True)

class Meta:
    model = Room
    fields = ['id', 'roompicture']
 

class HotelPictureSerializer(serializers.ModelSerializer):
location = Base64ImageField(max_length=None, use_url=True)

class Meta:
    model = HotelPicture
    fields = ['id', 'hotel', 'location']


class HotelSerializer(serializers.ModelSerializer):

 hotelpicture = HotelPictureSerializer(many=True)
 roompicture  = RoomSerializer(many=True)

class Meta:
    model = Hotel
    fields = ['id', 'hotelpicture', 'roompicture']

     def create(self, validated_data):
    hotelpictures_data = validated_data.pop('hotelpicture')
    roompictures_data = validated_data.pop('roompicture')
    hotel = Complex.objects.create(**validated_data)

    for hotelpicture in hotelpictures_data:
        HotelPicture.objects.create(hotel=hotel, **hotelpicture)
    for roompicture_data in roompictures_data:
        room = Room.objects.create(hotel=hotel, **roompicture_data)
        room_pictures_data = room_data.pop('roompicture')
        for room_picture_data in room_pictures_data:
            RoomPicture.objects.create(room=room, **room_picture_data)

    return hotel


 def update(self, instance, validated_data):
    hotelpictures_data = validated_data.pop('hotelpicture')
    roompictures_data = validated_data.pop('roompicture')

    # Updates for hotel pictures
    for hoteltpicture_data in hotelpictures_data:
        hotelpicture_id = hotelpicture_data.get('id', None)
        if hotelpicture_id:
            hp = hotelPicture.objects.get(id=hotelpicture_id, hotel=instance)
            hp.location = hotelpicture_data.get('location', cp.location)
            hp.save()
        else:
            HotelPicture.objects.create(hotel=instance, **hotelpicture_data)

    
    for room_data in rooms_data:
        room_id = room_data.get('id', None)
        r = Room.objects.get(id=room_id, hotel=instance)
        roomspictures_data = room_data.pop('roompicture')

        
        for roompicture_data in roomspictures_data:
            roomspicture_id = roomspicture_data.get('id', None)
            if roompicture_id:
                rp = RoomPicture.objects.get(id=roompicture_id, room=r)
                rp.location = roompicture_data.get('location', rp.location)
                rp.save()
            else:
                RoomPicture.objects.create(room=r, **roomspicture_data)

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

r = Room.objects.get(id=room_id, hotel=instance), но я не знаю, как это решить.

Я еще не пробовал, но вы можете попробовать следующее

В наборе представлений вы не должны использовать метод post, а должны использовать методы list create retrieve update partial_update destroy в зависимости от того, что вы пытаетесь сделать. Не похоже, что вы создаете какую-либо картину с помощью этого набора представлений, поскольку вы переопределили метод post и сохранили пользователя, а не отель. Если это то, что вы хотели сделать, возможно, попробуйте сохранить HotelSerializer с данными также.

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