Django - объект сохранения работал один раз, но теперь это не так - PullRequest
0 голосов
/ 21 октября 2019

Я хочу сохранить объект в БД, и он работал один раз, но теперь это не так, я подозреваю, что это как-то связано с Глоссарием

Все

views.py

@login_required
def product_form_view(request):
    if request.method == 'POST':
        form = Product_Form(request.POST, request.FILES)
        if form.is_valid():

            product_form = form.save()
            product_form.save()
            return redirect('product_management_view')
    else:
        form = Product_Form()
    return render(request, 'product-form.html', {'form': form})

models.py

class Product (models.Model):

    sub_chapter = models.ForeignKey(Sub_Chapter, on_delete=models.CASCADE)
    supplier = models.ForeignKey(Supplier, on_delete=models.CASCADE)
    glossary = models.ManyToManyField(Glossary, blank=True )
    name = models.CharField(max_length=40, blank=False, null=False)
    description = models.TextField(null=True)
    product_image = models.ImageField(
        upload_to='media/images/product_images', blank=False, null=False)
    reference = models.CharField(max_length=40, blank=False, null=False)
    width = models.PositiveIntegerField()
    height = models.PositiveIntegerField()
    length = models.PositiveIntegerField()
    unit_price = models.DecimalField(
        max_digits=15, decimal_places=4, null=True)
    polution = models.DecimalField(decimal_places=8, max_digits=15, null=True, blank=True )
    technical_implementation = models.TextField(null=True)

    def __str__(self):
        return self.name 

    def get_absolute_url(self):
        return reverse_lazy("manufacter_product_view", kwargs={'id': self.pk})

forms.py

class Product_Form(forms.ModelForm):




    sub_chapter  = forms.ModelChoiceField(queryset=Sub_Chapter.objects.all(), 
        required=True, widget=forms.Select())



    supplier  = forms.ModelChoiceField(queryset=Supplier.objects.all(), 
        required=True, widget=forms.Select())




    glossary  = forms.ModelChoiceField(queryset=Glossary.objects.all(), 
        required=False, widget=forms.SelectMultiple())



    product_image = forms.ImageField(
        required=True, widget=forms.FileInput())




    class Meta():
        model = Product

fields = ['name', 'description', 'reference', 'width', 'высота ',' длина ',' polution ',' unit_price ',' technical_implementation ',' sub_chapter ',' supplier ',' glossary ',' product_image ',]

1 Ответ

0 голосов
/ 21 октября 2019

В вашем product_form_view есть ошибка, вы вызываете метод save для переменной product_form, т. Е. product_form.save () , но product_form будет иметь значение None, так как form.save () вернет None при успешном завершениисохраняя объект, поэтому он нарушит код там. И вам вообще не нужно снова вызывать метод save. Для сохранения объекта достаточно вызова form.save () , и вы должны переместитькод в остальной части из него, так как он в настоящее время не обрабатывает неверный регистр формы. Ваш код должен быть таким:

@login_required 
def product_form_view(request): 
    if request.method == 'POST': 
        form = Product_Form(request.POST, request.FILES) 
        if form.is_valid():
            form.save()
            return redirect('product_management_view') 
    form = Product_Form() 
    return render(request, 'product-form.html', {'form': form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...