Как я могу отправить изображение в базу данных с помощью формы, инициализированной данными модели? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть форма GoodGet:

class GoodGet(forms.ModelForm):
    class Meta:
        model = Good_Get
        Size = forms.ModelChoiceField(queryset = Good.objects.all())
        fields = '__all__'

        widgets = {
            'Name': forms.TextInput(attrs = {'type': 'hidden'}),
        }

    def __init__(self, *args, good_id1=None, **kwargs):
        super(forms.ModelForm, self).__init__(*args, **kwargs)
        if good_id1 is not None:
            obj = Good.objects.filter(id = good_id1)
            for good in obj:
                good_sizes = good.Size.all()
            self.fields['Size'].queryset = good_sizes

Я инициализировал эту форму с данными из модели "Хорошо" в views.py:

class Adding(View):
    def get(self, request, good_id):
        good = Good.objects.filter(id = good_id)
        good1 = Good.objects.get(id = good_id)
        form = GoodGet(initial = {'Photo': good1.Photo, 'Name': good1.Name, 'Price': good1.Price}, good_id1 = good_id)
        return render(request, 'HiPage/add_to_cart.html', context = {'form': form, 'good': good})

    def post(self, request, good_id):
        good1 = Good.objects.get(id = good_id)
        form = GoodGet(request.POST, initial = {'Photo': good1.Photo, 'Name': good1.Name, 'Price': good1.Price}, good_id1 = good_id)
        if form.is_valid():
            form.save()
            return redirect('/cart')
        good = Good.objects.filter(good_id1 = good_id)
        return render(request, 'HiPage/add_to_cart.html', context = {'form': form, 'good': good})

CharFields "Name" и "Price" сохраняются в базе данных, но не ImageField "Photo" ... На сайте я вижу это, поэтому инициализация работает хорошо

Но когда я нажимаю "отправить", все сохраняется, кроме Фото ... Как я могу это исправить?

Модели "Good" и "Good_Get", если вам нужно:

class Good(models.Model):
    Name = models.CharField(max_length = 150)
    Type = models.ForeignKey('Type', on_delete=models.CASCADE, null=True)
    Available = models.CharField(max_length = 50)
    Photo = models.ImageField(upload_to = 'clothes_photos')
    Price = models.IntegerField(default = '0')
    Discount = models.IntegerField(default = '0')
    Size = models.ManyToManyField('Size')

    def __str__(self):
        return self.Name

class Good_Get(models.Model):
    Size = models.ForeignKey(Size, on_delete=models.CASCADE, null=True)
    Name = models.CharField(max_length = 150, default = " ")
    Photo = models.ImageField(default = " ")
    Price = models.CharField(max_length = 10, default = '0')

    def __str__(self):
        return str(self.Size)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...