Python 如何在django模型中使用is_superuser

Python 如何在django模型中使用is_superuser,python,django,django-models,Python,Django,Django Models,我想重写Field类中的_db_值,我想如果用户是超级用户,则该值将完全返回,否则该值具有特殊格式。 为此,我如何使用is_superuser class Foo(models.CharField): def from_db_value(self, value, expression, connection): if is_superusers: return value else: return "----" 你不能from_db_value没

我想重写Field类中的_db_值,我想如果用户是超级用户,则该值将完全返回,否则该值具有特殊格式。 为此,我如何使用is_superuser

class Foo(models.CharField):
def from_db_value(self, value, expression, connection):
    if is_superusers:
        return value
    else:
        return "----"

你不能
from_db_value
没有上下文来确定当前用户


而且,你不应该。处理此类问题的更好方法是通过模型或其权限。我不知道为什么您希望对象具有不同的表示形式,这取决于从数据库检索对象的用户。这是个糟糕的设计。

这个问题还不清楚。字段不知道有关超级用户的任何信息。为什么需要自定义字段?此处没有可用的用户。签出如果您需要全局访问请求,那么您可以查询
request.user.is_superuser
@schwobaseggl No.不要这样做。然后,当您在没有请求的地方访问模型时,模型就会崩溃:在shell中、在测试中、在管理命令中、在cron中……@DanielRoseman当然,查询需要足够健壮,以便在没有请求的情况下不会崩溃。@schwobasegl即使这样,我仍然不建议这样做。我认为不可能可靠地确定在没有可用请求时应该返回什么值,以及to_python函数应该如何运行。我认为这是为模糊的不可预测的行为打开了大门。