Django /products/new/NOT NULL约束处的IntegrityError失败:products\u product.user\u id

Django /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

我正在创建一个市场,在那里选定的用户可以有他们的商店和CRUD他们的产品。 我在创建Createview类时运行错误。我需要一个表单,其中用户添加了一个新产品,根据商店模型返回他自己的商店名称,但看起来像上面一样有一个错误。 以下是我的应用程序:

models.py

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)会影响用户模型函数吗?谢谢