众所周知,通过设置布尔属性,可以轻松地在Django管理器中显示方法返回值为boolean:
class MyModel(models.Model):
def is_something(self):
if self.something == 'something':
return True
return False
is_something.boolean = True
如何实现与财产相同的效果,如下列情况?
class MyModel(models.Model):
@property
def is_something(self):
if self.something == 'something':
return True
return False
解决方法
等待更好的解决方案出现,我以下列方式解决了:
class MyModel(models.Model):
def _is_something(self):
if self.something == 'something':
return True
return False
_is_something.boolean = True
is_something = property(_is_something)
然后我将引用ModelAdmin子类中的_is_something方法:
class MyModelAdmin(admin.ModelAdmin):
list_display = ['_is_something']
而is_something属性否则:
if my_model_instance.is_something:
print("I'm something")
