Django /products/new/NOT NULL约束处的IntegrityError失败:products\u product.user\u id
我正在创建一个市场,在那里选定的用户可以有他们的商店和CRUD他们的产品。 我在创建Createview类时运行错误。我需要一个表单,其中用户添加了一个新产品,根据商店模型返回他自己的商店名称,但看起来像上面一样有一个错误。 以下是我的应用程序: models.pyDjango /products/new/NOT NULL约束处的IntegrityError失败:products\u product.user\u id,django,Django,我正在创建一个市场,在那里选定的用户可以有他们的商店和CRUD他们的产品。 我在创建Createview类时运行错误。我需要一个表单,其中用户添加了一个新产品,根据商店模型返回他自己的商店名称,但看起来像上面一样有一个错误。 以下是我的应用程序: models.py class Shop(models.Model): shop_name = models.CharField(max_length=120) owner = models.OneToOn
class Shop(models.Model):
shop_name = models.CharField(max_length=120)
owner = models.OneToOneField(User,on_delete=models.CASCADE, related_name="owner")
def __str__(self):
return self.shop_name
class Product(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,)
shop = models.ForeignKey (Shop, on_delete=models.CASCADE, related_name='shop')
category = models.ForeignKey(Category, verbose_name ='Categoria',on_delete=False )
title = models.CharField(max_length=120)
slug = models.SlugField(blank= True, null=True, unique = True)
views.py
class ProductCreateView(LoginRequiredMixin,SubmitBtnMixin, CreateView):
model = Product
form_class = ProductForm
template_name = 'form.html'
success_url = '/products/list'
submit_btn = 'Add Product'
def form_valid(self, form):
new_product = form.save(commit=False)
user = self.request.user
s = Shop.objects.get (owner=user)
new_product.shop = s
new_product.save()
return super (ProductCreateView, self).form_valid(form)
FORM.PY
class ProductForm(ModelForm):
class Meta:
model = Product
fields = ['category', 'title', 'description', 'price', 'image']
exclude = ['shop']
在您的产品模型中,我没有看到属性“description”,但在您的表单中,您指定了字段“description”。尝试将null=True、blank=True添加到产品模型的用户字段中
class Product(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=True, blank=True)
shop = models.ForeignKey (Shop, on_delete=models.CASCADE, related_name='shop')
category = models.ForeignKey(Category, verbose_name ='Categoria',on_delete=False )
title = models.CharField(max_length=120)
slug = models.SlugField(blank= True, null=True, unique = True)
您忘记将用户添加到模型中
new\u product.user=user
在您new\u product.save()
之前。嗨,是的,粘贴我截断了一些模型字段,因为问题肯定在第一行。在您的建议之后,它现在起作用了。在任何情况下,此更改(null=True,blank=True)会影响用户模型函数吗?谢谢