我已经覆盖了clean()方法在我的模型中执行自定义验证。有什么方法可以获取正在保存的模型的实例吗?如何在clean中获取模型的实例()
class Consumption(models.Model):
storage = models.ForeignKey(Storage, related_name='consumption')
timestamp = UnixDateTimeField()
consumption = models.BigIntegerField(help_text='Consumption in Bytes')
def clean(self):
if self.storage_type == PRIMARY:
if Storage.objects.filter(company=self.company, storage_type=PRIMARY).exists():
raise ValidationError({'storage_type': 'Already exists a Primary storage'})
当我修改一个与消耗有关的存储时,它引发了ValidationError。所以我想改进像这样的过滤器:
Storage.objects.exclude(pk=self.instance.pk).filter(...)
从哪里可以拿到实例?
你可以使用['pre_save'](https://docs.djangoproject.com/en/1.10/ref/signals/#pre-save),例如像这样的答案http://stackoverflow.com/a/6462188/6396981 –
@SancaKembang如何帮助? OP正在询问如何让他的模型实例在'clean'方法中。 –