【发布时间】:2019-09-29 10:09:28
【问题描述】:
我使用 django-reversion 来控制我的模型的更改,但是我的模型清理方法有问题。
例如,我的模型如下所示:
class Document(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
client = models.ForeignKey(Client, on_delete=models.CASCADE)
template = models.ForeignKey(Template, on_delete=models.CASCADE)
def clean(self):
if self.template.only_one and (Document.objects.filter(client=self.client, template=self.template).count() > 0):
raise ValidationError('Test')
我在 admin.py 中注册了这个模型:
@admin.register(Document)
class DocumentReversion(VersionAdmin):
pass
现在我在管理部分创建一个文档记录,引用一个模板,其中字段only_one 是True。
如果我删除并检索此记录,则会触发 ValidationError。
为什么?因为我已经删除了唯一可用的记录。很好奇……
【问题讨论】:
-
因为
clean()在现有文档上被调用,因此self.template.only_one和Document.objects.filter(...).count()也为真,因此会引发错误。
标签: python django django-models django-reversion