django:使用QuerySet.values()返回Python类型?

时间:2011-09-27 05:20:44

标签: django django-models

我有一个自定义Field,可以将值转换为Python类型:

class MyField(models.Field):
    # …
    def to_python(self, value):
        # …
        return MyType(value)

有没有办法欺骗QuerySet.values(…)对其返回的值运行特定于字段的转换?

例如,我想要这样的事情:

>>> MyModel.objects.all().values("my_field")
[{"my_field": MyType(…)}]

取代当前的行为:

>>> MyModel.objects.all().values("my_field")
[{"my_field": "raw_database_value"}]

显然我可以手动转换结果......但这有点蹩脚= \

1 个答案:

答案 0 :(得分:2)

不,这是不可能的。您可以在https://code.djangoproject.com/ticket/9619

查看相关的故障单

在那里,您会看到是否values()应该实际运行任何特定于字段的转化​​。

由于故障单标记为“需要设计决策”,您需要通过发布到django-developers mailing list或在IRC(Freenode#django-dev)上与某人一起提出来进行提交

与此同时,您必须手动转换原始数据库值。