ModelForm不会将任何数据保存到数据库-Django

时间:2020-06-21 15:25:41

标签: django django-models django-forms django-views django-templates

我正在尝试使用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 个答案:

答案 0 :(得分:1)

您正在上传图像,在这种情况下,您需要设置表单enctype="multipart/form-data"

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