正确实例化DRF ModelField

时间:2013-06-04 08:44:14

标签: django-rest-framework

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

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

 reading_order = ModelField(model_field=JSONField())