我已經覆蓋了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'方法中。 –