【发布时间】:2017-10-13 22:17:37
【问题描述】:
我使用了唯一的共同模型元,它可以工作,但它只是出现了这个错误。我想引发表单验证错误,而不是 IntegrityError。
/name/ 处的完整性错误
UNIQUE 约束失败:canvas_canvas.user_id、canvas_canvas.canvas_name
请求方法:POST 请求网址:http://127.0.0.1:8000/name/ 异常类型:IntegrityError 异常值:
UNIQUE 约束失败:canvas_canvas.user_id、canvas_canvas.canvas_name
异常位置:C:\Users\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\db\backends\sqlite3\base.py 在执行,第 337 行
class Canvas(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
canvas_name = models.CharField(
max_length=100,
validators=[
# validate_canvas_title,
RegexValidator(
regex=CANVAS_REGEX,
message='Canvas must only contain Alpahnumeric characters',
code='invalid_canvas_title'
)],
)
slug = models.SlugField(max_length=100, blank=True)
background_image = models.ImageField(
upload_to=upload_location,
null=True,
blank=True,
)
# sort catergory into alphabetical order
category = models.ForeignKey('category.Category', default=1, blank=True)
followers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='canvas_followed_by', blank=True)
class Meta:
unique_together = ['user', 'canvas_name']
表格
class CanvasModelForm(ModelForm):
class Meta:
model = Canvas
fields = ['canvas_name', 'category', 'background_image']
widgets = {
'canvas_name': TextInput(attrs={'class': 'form-input'}),
'category': Select(attrs={'class': 'form-input'}),
}
查看
user = get_object_or_404(User, username=username)
form_create = CanvasModelCreateForm(request.POST or None)
if form_create.is_valid():
instance = form_create.save(commit=False)
instance.user = request.user
instance.save()
return redirect('canvases:canvas', username=request.user.username, slug=instance.slug)
template = 'pages/profile.html'
context = {
'user': user,
'form_create': form_create,
}
return render(request, template, context)
【问题讨论】:
-
没有。您的表单进行验证。但是你没有显示任何代码,所以我们看不出有什么问题。
-
我刚刚更新了这个问题。我认为类元(unique_together = ['user','canvas_name'])。是错误的原因。
-
什么是实际错误和回溯?风景在哪里?
标签: django django-models django-forms