Как создать виджет для загрузки нескольких файлов, который создает встроенный объект для каждого загруженного файла в админке django

У меня есть модели House и HouseImage:

class House(models.Model):
    ...

class HouseImage(models.Model):
    image = models.ImageField()
    house = models.ForeignKey(House, related_name='images')

Проблема в том, чтобы разрешить пользователям на странице администратора загружать несколько изображений HouseImages. Теперь у меня HouseImageAdmin как встроенный в HouseAdmin, и в этом случае пользователь не может добавить несколько HouseImages, загрузив несколько файлов, пользователь должен добавить новый встроенный объект, затем загрузить файл, а затем повторить эти действия N раз. Я хочу добавить один виджет для загрузки нескольких файлов, который будет автоматически добавлять HouseImage для каждого загруженного файла. Как мне это сделать?

🤔 А знаете ли вы, что...
Django имеет ряд библиотек для работы с геолокацией и геоданными.


1
625
1

Ответ:

Я это сделал. Только что сделал кастомную админку

class HouseAdminForm(forms.ModelForm):
    images = forms.FileField(
        widget=forms.ClearableFileInput(attrs = {'multiple': True}),
        label=u'Фото дома',
        required=False,
    )

    class Meta:
        model = House
        fields = '__all__'

    def save(self, *args, **kwargs):
        house = super(HouseAdminForm, self).save(*args, **kwargs)
        if hasattr(self.files, 'getlist'):
            for f in self.files.getlist('images'):
                HouseImage.objects.create(house=house, image=f)
        return house