1

假设我有一个模型:

class Ticket(models.Model):
    client = models.ForeignKey(Client)
    color = models.CharField(max_length=255)

    def clean(self):
        self.color = self.client.favorite_color

当我在最新的 Django(15 分钟前的 SVN 的负责人)上运行它时,如果我在没有选择 a 的情况下点击 save ,我会从我的 clean 方法(部分)中client得到一个错误。由于模型需要该属性,因此不应该在我的自定义验证之前处理吗?DoesNotExistself.client.favorite_colorclientclean()

这是我正在阅读的文档:http: //docs.djangoproject.com/en/dev/ref/models/instances/#id1

4

2 回答 2

1

我想知道是否有人遇到这个问题:

在模型上的 full_clean() 中,首先运行 clean_fields(),但不会引发错误以进行显示等。相反,它们只是简单地添加到 dict(),然后是 clean(),这是模型的自定义验证方法运行以将您的任何自定义错误添加到字典中。只有在那之后才会再次引发错误。

于 2010-01-26T21:00:50.043 回答
-3

clean()是 ModelForms 的可调用对象,而不是模型。

请参阅文档。

要在模型级别执行您似乎想要执行的操作,请覆盖该save()方法。

评论后编辑:好吧,看来是时候重新阅读文档了,即将发布 1.2。:-) 感谢您指出。

于 2010-01-26T20:22:39.943 回答