我正在尝试按类别在django中插入产品。我有两个模型产品和类别。我想在产品表中添加产品。当我在选择框中添加产品类别并选择类别时,类别值中的类别ID 。插入到产品表中。类别为ForeignKey。但是显示此错误:无法分配“'1'”:“ Product.p_c_name”必须是“ Category”实例。 1是类别ID的值。 model.py:
from django.db import models
from django import forms
# Create your models here.
class Category(models.Model):
c_name = models.CharField(max_length=50)
def _str_(self):
return self.c_name
class Product(models.Model):
p_name = models.CharField(max_length=255)
p_desc = models.TextField()
p_price = models.CharField(max_length=255)
p_date=models.DateTimeField(auto_now_add=True)
status = models.BooleanField()
p_c_name = models.ForeignKey(Category,on_delete=True)
image = models.ImageField()
def __str__(self):
return self.p_name
我的view.py:
# Product Start form here
def product_add(request):
print(request.POST)
cats = Category.objects.all()
if request.method == 'POST' and request.FILES['image']:
p_name = request.POST['p_name']
p_desc = request.POST['p_desc']
p_price = request.POST['p_price']
p_c_name = request.POST['p_c_name']
status = 0
myfile = request.FILES['image']
fs = FileSystemStorage()
filename = fs.save(myfile.name,myfile)
uploaded_file_url = fs.url(filename)
data = Product(p_name=p_name,image=filename,p_desc=p_desc,p_price=p_price,p_c_name=p_c_name,status=status)
data.save()
return redirect('/product/product-list',{
'uploaded_file_url': uploaded_file_url
})
else:
return render(request,'product/add.html',{'cats':cats})
我的form.html:
<form class="text-center border border-light p-5" method="POST" action=""enctype="multipart/form-data">
{% csrf_token %}
<!-- Name -->
<input type="text" id="defaultContactFormName" class="form-control mb-4"name="p_name" placeholder="Product Name">
<input type="text" id="defaultContactFormName" class="form-control mb-4"name="p_price" placeholder="Product Price">
<textarea class="form-control mb-4" name="p_desc"id="exampleFormControlTextarea5" rows="3"placeholder="Product Description"></textarea>
<select class="form-control mb-4"name="p_c_name">
<option selected disabled>Select Category</option>
{% for cat in cats %}
<option value="{{cat.id}}">{{cat.c_name}}</option>
{% endfor %}
</select>
<input type="file" id="defaultContactFormName" class="form-control mb-4"name="image">
<!-- Send button -->
<button class="btn btn-info btn-block" type="submit">Save</button>
</form>