Mat*_*kel 11 django orm sqlalchemy
我非常喜欢SQLAlchemy的功能,它允许您查看对象是否是脏的:如果它是从数据库中检索到的,或者是上次保存的话.
是否有可能从Django ORM中找到这些信息?
请注意,这与django中的脏字段不同,因为我不关心以前的数据是什么,虽然S.Lott的答案可能提供了一种方法,但我想要一种不会触及的方法数据库.
我也看过了django.db.transaction.is_dirty(),但这似乎不是解决方案.
执行数据库查询的解决方案:
class DirtyMixin(object):
@property
def is_dirty(self):
db_obj = self.__class__.objects.get(self.pk)
for f in self._meta.local_fields:
if self.__getattribute__(f.name) != db_obj.__getattribute__(f.name):
return True
return False
Run Code Online (Sandbox Code Playgroud)
然后,您可以将其作为祖先类添加到模型中。或者,如果您愿意,可以对 forms.Model 类进行猴子修补。
from django.db import models
models.Model.__bases__ = (DirtyMixin,) + models.Model.__bases__
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |