當我從我的表單中添加數據並得到此錯誤。 IntegrityError在/ open_shop/ 列蛞蝓是不是唯一的列塞不是唯一的
,但經測試,並一決高下的唯一
class OpenShopForm(forms.ModelForm):
class Meta:
model = Shop
class OpenShop(CreateView):
model = Shop
form_class = OpenShopForm
def form_valid(self, form):
f = form.save(commit=False)
f.submitter = self.request.user
if self.request.method == 'POST':
f = OpenShopForm(self.request.POST)
f.save()
return super(CreateView, self).form_valid(form)
def get_success_url(self):
return reverse("profile", kwargs={'slug': self.request.user})
如果我通過管理添加相同的,它工作正常
此代碼不能保存圖片:
class OpenShop(CreateView):
model = Shop
form_class = OpenShopForm
def form_valid(self, form):
f = form.save(commit=False)
f.submitter = self.request.user
f.save()
return super(CreateView, self).form_valid(form)
def get_success_url(self):
return reverse("profile", kwargs={'slug': self.request.user})
{% extends "base.html"%}
{% block content %}
<form enctype="multipart/form-data" action="{% url 'addproduct' %}" method="post">{% csrf_token %}
{{ form.non_field_errors }}
<p>
{{form.title.errors}}
<label class="txtField" for="id_subject">Product name:</label>
{{ form.title }}
</p>
<p>
{{form.slug.errors}}
<label class="txtField" for="id_subject">Slug:</label>
{{ form.slug }}
</p>
<p>
{{form.catalog.errors}}
<label class="txtField" for="id_subject">Product catalog:</label>
{{ form.catalog }}
<p>
{{form.subcatalog.errors}}
<label class="txtField" for="id_subject">Product subcatalog:</label>
{{ form.categories }}
</p>
<p>
{{form.description.errors}}
<label class="txtField" for="id_subject">Product descriptions:</label>
{{ form.description }}
</p>
<p>
{{form.price.errors}}
<label class="txtField" for="id_subject">Product price:</label>
{{ form.price }}
</p>
<p>
{{form.sale_price.errors}}
<label class="txtField" for="id_subject">Product sale price:</label>
{{ form.sale_price }}
</p>
<p>
{{form.is_active.errors}}
<label class="txtField" for="id_subject">Product activity:</label>
{{ form.is_active }}
</p>
<p>
{{form.is_featured.errors}}
<label class="txtField" for="id_subject">Product featured:</label>
{{ form.is_featured }}
</p>
<p>
{{form.quantity.errors}}
<label class="txtField" for="id_subject">Product quantity:</label>
{{ form.quantity }}
</p>
<p>
{{form.shop.errors}}
<label class="txtField" for="id_subject">Product shop:</label>
{{ form.shop }}
</p>
<input type="submit" value="Submit" />
</form>
{% endblock %
}
models.py
class Product(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
image = models.ImageField(verbose_name=u'Image', upload_to="product_pic", blank=True)
catalog = models.ForeignKey(Catalog)
subcatalog = models.ManyToManyField(Subcatalog)
description = models.TextField(blank=True, help_text="Describe product")
submitter = models.ForeignKey(User, related_name="product vendor")
price = models.DecimalField(max_digits=15, decimal_places=2)
sale_price = models.DecimalField(max_digits=15, decimal_places=2)
is_active = models.BooleanField(default=True)
is_featured = models.BooleanField(default=False)
quantity = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
shop = models.ForeignKey(Shop)
def __unicode__(self):
return self.title
不'f = OpenShopForm(self.request.POST)'完全關閉f.submitter行嗎?如果我理解正確,提交者是slu,子,所以如果你壓倒那條線,那麼沒有slu子被分配 – yuvi
並使用'request.POST'保存圖片?這是毫無意義的,因爲文件被傳送到'request.FILES'而不是'request.POST'。 – yuvi
也不保存。我卡住了...... – wadadaaa