1

我正在尝试使用 ModelField 来序列化 JSONField。我不太确定传递给“model_field”kwarg 的预期内容是什么。传递类名并没有削减它,因为 ModelField 似乎直接存储“model_field”并在其上调用方法。

== restapi.py ==

    reading_order = ModelField(model_field=JSONField) # Corresponds to a JSONField 'reading_order' in my model.

== rest_framework/fields.py ModelField ==

def field_to_native(self, obj, field_name):
    value = self.model_field._get_val_from_obj(obj)

这导致错误说第一个参数应该是 JSONField 的实例,这是有道理的,因为 self.model_field 是类定义。如果我将其更改为:

def field_to_native(self, obj, field_name):
    value = self.model_field._get_val_from_obj(obj._meta.get_field(field_name), obj)

它工作正常。

我不确定这是我偶然发现的错误,还是我实例化了 ModelField 错误。有人可以指出使用 ModelField 的正确方法吗?

问候, Abhaya

4

1 回答 1

1

相信这是一个文档问题。 ModelField应该传递一个字段实例,而不是一个字段类,所以你应该像这样实例化模型字段:

 reading_order = ModelField(model_field=JSONField())
于 2013-06-04T09:29:51.797 回答