Я хочу добавить изображения в список (ForeignKey), который уже будет в моей базе данных.
У меня есть модель Image ..
class Image(models.Model):
photo = models.ImageField(blank=True, upload_to=get_image_filename)
listing = models.ForeignKey(Listing, on_delete=models.CASCADE)
ImageSerializer
class ImageSerializer(serializers.HyperlinkedModelSerializer):
photo = serializers.ImageField(allow_empty_file=True)
class Meta:
model = Image
fields = ('url', 'photo', 'listing', )
def create(self, data):
listing, __ = Listing.objects.get_or_create(listing=data["listing"])
return Image(photo=data["photo"], listing=listing)
ImageViewSet
class ImageViewSet(viewsets.ModelViewSet):
queryset = Image.objects.all()
serializer_class = ImageSerializer
detail_serializer_class = ImageDetailSerializer
parser_classes = (FormParser, MultiPartParser)
'''Show detailed Image view'''
def get_serializer_class(self):
if self.action == 'retrieve':
if hasattr(self, 'detail_serializer_class'):
return self.detail_serializer_class
return super(ImageViewSet, self).get_serializer_class()
Я попытался переопределить метод создания в сериализатор и метод execute_create в фактическом наборе. Но продолжайте сталкиваться с ошибками. Любой совет в правильном направлении был бы потрясающим
] 1
FieldError в / api / v1 / images /
Невозможно разрешить ключевое слово 'listing' в поле. Варианты выбора: адрес, кондиционер, удобства, приблизительный_квартира, видеоматериал, подвал, город, сообщество, описание, внешний дом, гаражи, отопление, hoa, house_levels, id, изображение, широта, listprice, долгота, lot_size, номерные комнаты, numberfullbaths, numberhalfbaths, хозяйственные постройки, объекты недвижимости , pub_date, roof_type, roomtotal, школы, style_house, налоги, налоговая карта, type_house, unfinished_square_footage, пользователь, user_id, вода, yearbuilt, почтовый индекс, зонирование
Edit
изменен метод создания на ...
def create(self, validated_data):
listing_data = validated_data.pop('listing')
image = Image.objects.create(**validated_data)
image.listing =Listing.objects.get(photo=image,
listing_data=listing_data)
return image
Теперь ошибка ...
save () получил неожиданный аргумент ключевого слова 'force_insert'