我想在我的模型中有一个私有字段,并且仅在某些情况下使用它。但在外面我想以一种常见的方式使用它。例如,我的模型是这样的:
class MyModel(models.Model):
__field = models.TextField(db_column = 'field')
@property
def field(self):
if self.newSystem:
return someOtherValue
else:
return __field
现在是这样的:
MyModel.objects.filter(field='something')
引发了一个例外。是否有可能避免它?
答案 0 :(得分:1)
你不能在过滤器中使用字段。但是你可以访问像这样的字段
obj = MyModel.objects.all()[0]
obj.field
答案 1 :(得分:1)
我不确定你的困惑在这里。无论如何,无法在过滤器中使用方法或属性。 ORM无法知道属性是指基础数据库字段。您可以直接使用字段 - 即__field
- 而不是属性本身。