【发布时间】:2023-04-06 09:36:01
【问题描述】:
我有一个简单的模型,定义为:
class Article(models.Model):
slug = models.SlugField(max_length=50, unique=True)
title = models.CharField(max_length=100, unique=False)
和形式:
class ArticleForm(ModelForm):
class Meta:
model = Article
当我尝试更新现有行时,此处的验证失败:
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid(): # POOF
form.save()
创建一个新条目很好,但是,当我尝试更新这些字段中的任何一个时,验证不再通过。
“errors”属性什么都没有,但我进入调试器并在 Django 的内心深处看到了这个:
slug: "这个没有的文章已经存在"
所以看起来 is_valid() 在唯一值检查时失败了,但我想做的只是更新该行。
我不能这样做:
form.save(force_update=True)
...因为表单在验证时会失败。
这看起来很简单,但我就是想不通。
我正在运行 Django 1.0.2
什么叫 BaseModelForm.validate_unique() 在表单初始化时调用。
【问题讨论】:
-
请编辑并发布您的表单代码。