众所周知,在Django admin中将method返回值显示为布尔值很容易,只需设置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")

Django相关问答推荐

批量删除多对多条目?

如果密码在Django中未被散列,则对其进行散列

Django mods.py我想要一个函数转到一个变量

UpdateView 不会对 from 属性进行数据绑定

如何在没有此前缀的情况下修复此 django 路径?

Django - 使用在 URL 中传递的父类主键从子类中过滤对象

Django REST Framework如何在序列化程序中引发验证错误时指定错误代码

什么时候在 django rest 框架序列化程序中调用创建和更新?

Django - 站点匹配查询不存在

使用基于类的 UpdateView 在 Django 中更新用户模型

从python中的URL获取查询字符串的最佳方法?

Python 社区里的小马是怎么回事?

如何使 Django QuerySet 批量删除()更高效

如何在 Django 1.9 中删除 DB (sqlite3) 以从头开始?

Django Admin:如何在内联中显示模型上定义的属性?

Django REST Framework - 序列化可选字段

如何在 django 中仅获取表的特定列?

如何在 django 2.0 admin 中使用 allow_tags?

Django 的 Select .如何设置默认选项?

Django Debug Toolbar:了解时间面板( time panel)