Комната, соответствующая запросу, не существует. 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 с данными также.