我想覆蓋內置的django .save()
方法來對數據庫中的所有其他對象執行檢查。Django - 保存之前檢查其他對象
For example:
class User(models.Model):
name = models.CharField(max_length=120)
class Admin(models.Model):
name = models.CharField(max_length=120)
class SecurityGroup(models.Model):
name = models.CharField(max_length=120)
users = models.ManytoManyField(User)
admins = models.ManytoManyField(Admin)
def save(self, *args, **kwargs):
# check admins don't exist in any other SecurityGroup prior to save
super(SecurityGroup, self).save(*args, **kwargs) # Call the "real" save() method.
的documentation例子是相當簡單的,沒有描述這種類型的預存檢查。
我已經嘗試添加的行.save()
如:
`self.objects.filter(admins__name=self.admins.name).count()`
調用其他SecurityGroup對象,但我收到的錯誤:
`Manager is not accessible via SecurityGroup instance`
是否有可能實現這一保存功能內部到SecurityGroup模型,還是我需要創建一個form
和使用SecurityGroup.save(commit=False)
這種類型的預保存檢查?
感謝您的幫助。
您在通話有錯誤'超'將其更改爲'SecurityGroup',如果你想保存新的實例之前檢查,你可以檢查'self.pk'是否存在 –
謝謝,我修復了錯誤。你有更完整的答案來提供嗎? – NickBraunagel
請閱讀完整評論 –