我遇到了以下代码:
class MyModel(model.Model):
def __init__(self, *args, **kwargs):
self._log_data = dict()
super(MyModel, self).__init__(*args, **kwargs)
def send_data(self, obj):
self._log_data['foo'] = obj.foo
...
我只是觉得将._log_data
添加到orm实例是错误的。
到目前为止,我只是感觉这种实现并不明显,而且我缺少匹配项。
根据哪个规则/准则,这不是干净/好的代码吗?
答案 0 :(得分:-1)
如果您愿意的话,我建议将lunch aosp_x86-eng
设置为类变量。
_log_data
在Django shell中测试:
class MyModel(models.Model):
_log_data = None
field_a = models.IntegerField(null=True)
def send_data(self, bar):
if self._log_data is None:
self._log_data = dict()
self._log_data['foo'] = bar
可以确认class变量根本不影响其他对象。这是在Django的a = MyModel()
print(a._log_data)
>>> None
a.send_data('asdf')
print(a._log_data)
>>> {'foo': 'asdf'}
print(MyModel._log_data)
>>> None
b = MyModel()
print(b._log_data)
>>> None
模型中使用的。
AbstractBaseUser
所以我不认为这违反了规则。
+ ps:如果我没重点,我想让你指出。