Получить путь из Django FileInput и сохранить изображение в firebase - PullRequest
0 голосов
/ 14 июля 2020

У меня есть модель продукта, и мне нужен массив изображений. Я использую массив postgresql для хранения URL-адресов из хранилища firebase. Я не уверен, что это хороший способ обработки изображений, любая помощь с обработкой изображений в БД будет отличной.

class Product(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    categories = ArrayField(models.CharField(max_length=20))
    pictures = ArrayField(models.CharField(max_length=100))

Я хочу выбрать изображения из файловой системы с помощью Django FileInput, получите путь к ним и загрузите их в хранилище firebase. Я не могу понять, как это получить. Кроме того, мой clean_pictures не вызывается, не знаю почему, но я полагаю, что поле изображений модели отличается от поля формы, что приводит к ошибке.

class NewProductForm(forms.ModelForm):
    categories = forms.MultipleChoiceField(
        widget=forms.CheckboxSelectMultiple,
        choices=CATEGORIES_CHOICES
    )
    class Meta:
        model = Product
        fields = ['name','description','price','categories', 'pictures', 'businessId']
        widgets = {
            'name': forms.TextInput(attrs={
                'class': 'form_input',
                'placeholder': 'Nombre del producto'
                }),
            'description': forms.Textarea(attrs={
                'class': 'form_input',
                'placeholder': 'Descripcion'
                }),
            'price': forms.NumberInput(attrs={
                'class': 'form_input',
                'placeholder': 'Precio'
                }),
            'pictures': forms.FileInput(attrs={
                })
            
        }
    def clean_pictures(self):
        data = self.cleaned_data['pictures']
        #upload images to firebase and return the urls.
        print("pictures") #Check if called, NOT WORKING
        return data
...