我有一个自定义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"}]
显然我可以手动转换结果......但这有点蹩脚= \
答案 0 :(得分:2)
不,这是不可能的。您可以在https://code.djangoproject.com/ticket/9619
查看相关的故障单在那里,您会看到是否values()
应该实际运行任何特定于字段的转化。
由于故障单标记为“需要设计决策”,您需要通过发布到django-developers mailing list或在IRC(Freenode#django-dev)上与某人一起提出来进行提交
与此同时,您必须手动转换原始数据库值。