ModelForm не сохраняет данные в базу данных - Django - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь добавить продукт в свое приложение, используя modelForm. Форма рендеринг. Но после отправки он не сохраняет никаких данных в базе данных и не дает никаких ошибок.

просьба найти приведенные ниже коды и помочь.

модель

class Product(models.Model):
product_name = models.CharField(max_length=200)
product_category = models.CharField(max_length=50,
                                    choices=(('Distemper', 'Distemper'), ('Exterior', 'Exterior '),
                                             ('Interior', 'Interior')))
product_image = models.ImageField(upload_to='product_images')
product_MRP = models.FloatField()
product_size = models.IntegerField()
product_packeging = models.CharField(choices=(('KG', 'KG'), ('Liters', 'Liters ')), max_length=10)
product_datecreated = models.DateField(auto_now_add=True)

def __str__(self):
    return self.product_name + ' | ' + str(self.product_size) + ' | ' + self.product_packeging

форма

class AddProductForm(ModelForm):
class Meta:
    model = Product
    fields = '__all__'

    widgets = {
        'product_name': forms.TextInput(
            attrs={'type': 'list', 'class': "form-control", 'placeholder': "Product name"}),
        'product_category': forms.Select(
            attrs={'type': 'text', 'class': "form-control", 'placeholder': "Category"}),
        'product_image': forms.FileInput(
            attrs={'type': 'file', 'class': "form-control", 'placeholder': "Product Image"}),
        'product_MRP': forms.NumberInput(
            attrs={'type': 'text', 'class': "form-control", 'placeholder': "Product MRP"}),
        'product_size': forms.NumberInput(
            attrs={'type': 'list', 'class': "form-control", 'placeholder': "Product Size"}),
        'product_packeging': forms.Select(
            attrs={'type': 'list', 'class': "form-control", 'placeholder': "Select"}),
    }

шаблон

{% block content %}

<form style="margin-left: 15px; margin-right: 15px" method="post" action="add_product">
    {% csrf_token %}


    {{ form }}
    <div class="modal-footer" style="display:flex; justify-content: center">
        <button style="text-align: center" type="submit" class="btn btn-info">Create</button>

    </div>


</form>
{% endblock %}

просмотр

def add_product(request):
form = AddProductForm()
context = {'form': form}

if request.method == 'POST':
    form = AddProductForm(request.POST, request.FILES)
    if form.is_valid():
        form.save()
        messages.info(request, 'Product added successfully')
        print('Product Created')
return render(request, 'add_product.html', context)

Заранее спасибо

Я пытаюсь добавить продукт в свое приложение с помощью modelForm. Форма рендеринг. Но после отправки он не сохраняет никаких данных в базе данных и не дает никаких ошибок.

1 Ответ

1 голос
/ 21 июня 2020

Вы загружаете изображения, в этом случае вам необходимо указать форму enctype="multipart/form-data"

<form enctype="multipart/form-data" action="" method="post">
  ...
</form>
...