Django admin загрузка нескольких изображений в 1 форму
Я не хочу использовать inlines, поэтому я решил, что хочу загрузить кучу изображений одновременно. Теперь я целый день пытаюсь заставить его работать, но он не работает по какой-то причине.
Мой первый код:
Модель
class LaptopInfoImages(models.Model):
laptop_info = models.ForeignKey(LaptopInfo, on_delete=models.CASCADE)
image = models.ImageField(upload_to=images_directory)
admin
class LaptopInfoImagesForm(forms.ModelForm):
image = forms.ImageField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = LaptopInfoImages
fields = '__all__'
def save(self, commit=True):
instance = super().save(commit=False)
for image in self.cleaned_data['image']:
image_obj = LaptopInfoImages(laptop_info=instance.laptop_info, image=image)
image_obj.save()
if commit:
instance.save()
return instance
Это дает мне ошибку:
AttributeError: 'bytes' object has no attribute '_committed'
Поэтому я изменил код на:
admin
class LaptopInfoImagesForm(forms.ModelForm):
image = forms.ImageField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = LaptopInfoImages
fields = '__all__'
def save(self, commit=True):
instance = super().save(commit=False)
for image in self.cleaned_data['image']:
# Convert the image to a BytesIO object
bytes_io = BytesIO(image)
# Create an InMemoryUploadedFile from the BytesIO object
in_memory_file = InMemoryUploadedFile(
bytes_io, None, 'image.jpg', 'image/jpeg', len(image), None
)
# Save the image to the LaptopInfoImages model
image_obj = LaptopInfoImages(laptop_info=instance.laptop_info, image=in_memory_file)
image_obj.save()
if commit:
instance.save()
return instance
Он не выдает мне никаких ошибок, но загружает 9332 изображения информации о ноутбуке, а изображения не работают.