Django的模型不保存,如果条件得到满足
问题描述:
林正试图挽救MyModel
实例只有当条件满足,在我来说,我想保存只是如果我的模型字段的子对象是相等的,例如:Django的模型不保存,如果条件得到满足
def save(self, *args, **kwargs):
if self.field1.obj == self.field2.obj:
super(MyModel, self).save(*args, **kwargs)
我试过上面的代码,当obj
在字段不一样的时候它仍然保存。
- 为什么从超级保存方法没有被调用时它仍然保存?
- 是否可以在我的示例上设置else语句来明确指示不要保存?
答
感谢所有您的意见,在我的测试我使用
modelInstance = MyModelFactory.create(field1=field1, field2=field2)
assertNotIsInstance(modelInstance, MyModel)
即使它不保存到数据库不知何故,它总是返回一个未保存的实例。
当我更新我的测试来检查。
assertEqual(0, MyModel.objects.count())
它工作。
对不起,这个菜鸟问题。
它不应该保存。在python中比较两个相等的对象也是非常简单的,你可以实现。为什么它的价值你可以做别的:提高异常,看看是否被称为 –
节省方法?在管理员?不幸的是有很多方法可以绕过Django的'model.save()'方法,包括多个管理操作。 Condiser也['QuerySet.update()'](https://docs.djangoproject.com/en/1.8/ref/models/querysets/#django.db.models.query.QuerySet.update)。 –