在DRF 3中的ModelSerializer上添加非模型字段
如何在DRF 3中的ModelSerializer上添加非模型字段?即添加一个在我的实际模型中不存在的字段?
class TestSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='vote_detail')
non_field = serializers.CharField() # no corresponding model property.
class Meta:
model = vote_model
fields = ("url", "non_field")
def create(self, validated_data):
print(direction=validated_data['non_field'])
但是DRF 3给了我错误:
Got AttributeError when attempting to get a value for field `non_field` on serializer `TestSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `Test` instance.
Original exception text was: 'Test' object has no attribute 'non_field'.
我搜索了具有非模型write_only字段的堆栈DRF-
ModelSerializer,找到了一些解决方案,但这些解决方案是指我正在使用DRF
3的DRF2。在此版本上是否有解决方案?
-
class TestSerializer(serializers.ModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='vote_detail') non_field = serializers.SerializerMethodField() # no corresponding model property. class Meta: model = vote_model fields = ("url", "non_field") def create(self, validated_data): print(direction=validated_data['non_field'])
http://www.django-rest-framework.org/api-
guide/fields/#serializermethodfield或通过此链接