当前位置: 首页 > 知识库问答 >
问题:

IntegrityError在 /products/new/Not NULL约束失败:products_product.user_id

张淳
2023-03-14

我正在创建一个市场,在那里选定的用户可以有他们的商店和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']

共有1个答案

夏华藏
2023-03-14

在您的产品模型中,我没有看到“描述”属性,但是在您的表单中,您指定了“描述”字段。尝试在产品模型的用户字段中添加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)
 类似资料:
  • 问题内容: 我收到此错误消息: 第40行的错误1217(23000):无法删除或更新父行:外键约束失败 …当我尝试放置桌子时: …定义如下: 有趣的是, 我已经删除 了模式中具有外键的 所有其他表。实际上,除了表外,数据库是空的。 如果数据库中没有其他对象,怎么可能会有子行?据我所知,InnoDB不允许在其他模式上使用外键,对吗? (我什至可以运行命令:-?) 问题答案: 两种可能性: 在另一个架

  • 嗨,我知道有人问过这个问题,但我还没有找到正确的答案,为什么当我尝试做我的第二个插入: 我得到了错误: 错误1452(23000):无法添加或更新子行:外键约束失败(.,约束外键()引用()) 下面的DDL代码:

  • 我尝试使用cbv的im来保存一个对象,我不熟悉使用它,并且我尝试使用create view来保存一个对象,但是得到这个错误: "Not NULL约束失败:forum_question.user_id" 我将不胜感激初学者友好的解释如何解决这个问题,也许还有提示,谢谢! models.py: 表单.py: 视图.py: 例外?: 编辑3: 其他信息: 回溯(最近一次调用最后):文件“/主页/钛/本地

  • 问题内容: 我正在使用Django从Tango中学习Django,但是在输入时,我始终收到此错误: 这是输出: Models.py: 问题答案: 造成这种限制的原因可能是,在你最初迁移它时,在类中没有任何字段被调用(第一次迁移),并且在模型中添加了该字段之后,当你运行时,你已将默认值设置为静态值值(即或”等),并且打破了类别表的表段列的唯一约束,其中表段应该是唯一的,但这不是因为所有条目都将获得该

  • 问题内容: 我们如何确保列表中的各个字符串不为null /空白或遵循特定的模式 我也想添加图案 但是我可以不用它。但是我绝对希望有一个约束,它可以检查列表中的任何字符串是否为null或空白。而且Json模式看起来如何 问题答案: 您可以为电子邮件字符串创建一个简单的包装类: 然后在现有对象中标记该字段: 然后,验证器将验证列表中的每个对象。

  • 我正在使用model属性来获取employee对象。xml文件包含hibernate验证器依赖项。