Django的模型不保存,如果条件得到满足

问题描述:

林正试图挽救MyModel实例只有当条件满足,在我来说,我想保存只是如果我的模型字段的子对象是相等的,例如:Django的模型不保存,如果条件得到满足

def save(self, *args, **kwargs): 
     if self.field1.obj == self.field2.obj: 
      super(MyModel, self).save(*args, **kwargs) 

我试过上面的代码,当obj在字段不一样的时候它仍然保存。

  1. 为什么从超级保存方法没有被调用时它仍然保存?
  2. 是否可以在我的示例上设置else语句来明确指示不要保存
+0

它不应该保存。在python中比较两个相等的对象也是非常简单的,你可以实现。为什么它的价值你可以做别的:提高异常,看看是否被称为 –

+0

节省方法?在管理员?不幸的是有很多方法可以绕过Django的'model.save()'方法,包括多个管理操作。 Condiser也['QuerySet.update()'](https://docs.djangoproject.com/en/1.8/ref/models/querysets/#django.db.models.query.QuerySet.update)。 –

感谢所有您的意见,在我的测试我使用

modelInstance = MyModelFactory.create(field1=field1, field2=field2) 
assertNotIsInstance(modelInstance, MyModel) 

即使它不保存到数据库不知何故,它总是返回一个未保存的实例。

当我更新我的测试来检查。

assertEqual(0, MyModel.objects.count()) 

它工作。

对不起,这个菜鸟问题。