假设我有一个模特:
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的负责人)上运行时,如果我在没有选择client
的情况下点击保存,我的清理方法内部会出现DoesNotExist
错误(对于self.client.favorite_color
部分)。由于模型需要client
属性,因此在clean()
中进行自定义验证之前,是否应该处理此问题?
以下是我正在阅读的文档:http://docs.djangoproject.com/en/dev/ref/models/instances/#id1
答案 0 :(得分:1)
如果有人遇到这个问题,我想出来了:
在模型的full_clean()中,首先运行clean_fields(),但不会出现显示错误等。相反,它们只是添加到dict()然后是clean(),这是自定义验证方法运行您的模型以将任何自定义错误添加到dict。只有在那之后才会再次出现错误。
答案 1 :(得分:-3)
clean()
是一个可以调用的ModelForms,而不是模型。
在模型级别执行您似乎想要做的事情,override the save()
method.
评论后编辑:好吧,现在是时候用1.2即将重新阅读文档了。 :-)感谢您指出。