所以我有我的模型:
class MyModel(models.Model):
name = models.CharField(_('Name'), max_length=80, unique=True)
...
def save(self, *args, **kwargs):
if MyModel.objects.count() >= 5:
raise ValidationError("Can not have more than 5 MyModels!")
super().save(*args, **kwargs) # Call the "real" save() method.
数据库中已有5个来自MyModel的对象。我有一个页面,可以使用表单集同时编辑所有对象。当我更改其中一个或多个对象时,将收到验证错误“不能有5个以上的MyModel!"。为什么会发生这种情况?我以为表单集应该编辑现有对象,但它似乎正在写入一个新对象并删除旧对象。
当我对数据库执行www.example.com()时,到底发生了什么formset.save?我必须删除保存()方法吗?
1条答案
按热度按时间v8wbuo2f1#
不管你是在创建还是编辑,模型中的保存方法都会被调用。尽管你可以通过检查对象是否有主键来区分它们,如下所示:
如果你想要更复杂的验证控制,我建议把它们放在in the forms中,特别是如果你想限制表单集的数量,你可以查看这个文档。