我想覆盖内置的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
请阅读完整评论 –