Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中的IntegrityError,即使在定义表单_之后也是有效的_Python_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Python Django中的IntegrityError,即使在定义表单_之后也是有效的

Python Django中的IntegrityError,即使在定义表单_之后也是有效的,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我正在尝试创建模型表单并将其存储在数据库中。该模型表示一个产品,并具有类别、图像、价格等字段。。。等等 这是模型 类产品(models.Model): 类别=(“书籍”、“书籍/学习材料”), (“笔记本”、“笔记本/粗糙垫”), (“设备”、“设备/工具”), (“衣服”、“衣服/制服”), (“运动”、“运动/运动装”), (“杂项”、“杂项”)) user=models.ForeignKey(用户,on_delete=models.CASCADE) 发布日期=models.DateTime

我正在尝试创建模型表单并将其存储在数据库中。该模型表示一个产品,并具有类别、图像、价格等字段。。。等等

这是模型

类产品(models.Model):
类别=(“书籍”、“书籍/学习材料”),
(“笔记本”、“笔记本/粗糙垫”),
(“设备”、“设备/工具”),
(“衣服”、“衣服/制服”),
(“运动”、“运动/运动装”),
(“杂项”、“杂项”))
user=models.ForeignKey(用户,on_delete=models.CASCADE)
发布日期=models.DateTimeField(默认值=时区.now)
category=models.CharField(最大长度=13,选项=categories,默认值=“杂项”)
description=models.CharField(最大长度=75,null=True,blank=True)
image=models.ImageField(default=“product/default.png”,上传到=“product”)
price=models.PositiveIntegerField()
定义(自我):
通过{self.user.username}为{self.price}返回f“{self.category}”
def保存(自身、*args、**kwargs):
super().save()
image=image.open(self.image.path)
image.缩略图((600600),image.ANTIALIAS)
image=image.crop(((image.width-600)//2,(image.height-400)//2,(image.width+600)//2,(image.height+400)//2))
image.save(self.image.path)
这是同一型号的表格

class ProductAddForm(forms.ModelForm):
description=forms.CharField(max_length=75,widget=forms.TextInput(attrs={'placeholder':'description'}),help_text=“不超过75个字符”)
image=forms.ImageField(必需=False)
price=forms.IntegerField(required=False,widget=forms.TextInput(attrs={'placeholder':'price'}))
类元:
型号=产品
字段=(‘类别’、‘说明’、‘图像’、‘价格’)
def清洁描述(自身、*args、**kwargs):
description=self.cleanned\u data.get('description'))
如果len(描述)==0:
raise forms.ValidationError('需要说明!')
如果长度(说明)>75:
raise forms.ValidationError(f'Description最多应包含75个字符,但bot{len(Description)}个字符!')
返回说明
def清洁_价格(自、*args、**kwargs):
price=self.cleanned\u data.get('price'))
如果len(str(price))==0:
raise forms.ValidationError('需要产品价格!')
elif价格<0:
raise forms.ValidationError('负价格…..严重吗?'))
退货价格
下面是我使用django的通用CreateView创建的视图

类产品添加(CreateView):
型号=产品
form_class=ProductAddForm
模板名称='Product/Product\u add.html'
def表单_有效(self、form、*args、**kwargs):
form.instance.author=self.request.user
返回super().form_有效(form)
上面我定义了
form\u valid
方法,将产品的用户设置为当前用户。 但在提交表单时,错误仍然显示-

IntegrityError at /product/add/
NOT NULL constraint failed: Product_product.user_id
即使我没有定义
form\u valid
,我仍然会得到同样的错误


错误位于
super.save()
,它表示
格式错误:RelatedObjectsDoesNotExist:产品没有用户。

您的
产品
用户
的关系被命名为
用户
,而不是
作者

def form_valid(self, form):
    instance = form.save(commit=False)
    instance.user = self.request.user
    instance.save()

谢谢你的解决方案。我在学习一个教程。。。。因此错误。。。。我应该说这是一个愚蠢的错误。