【问题标题】:Django_Rest_Framework Serializer Field "source" attribute is not workingDjango_Rest_Framework 序列化器字段“源”属性不起作用
【发布时间】:2019-01-22 03:25:24
【问题描述】:

我正在尝试构建一个 DRF 序列化程序,它使用与底层 Django 模型不同的字段名称。我认为这就是“源”属性的用途。

这是一些代码:

models.py:

class MyModel(models.Model):     
    my_snake_case_field = models.DateTimeField()

serializers.py

class MySerializer(serializers.ModelSerializer):

    class Meta:
        model = MyModel
        fields = ('id', 'myCamelCaseField', )

        myCamelCaseField = serializers.DateTimeField(source='my_snake_case_field')

但是当我尝试查看时出现以下错误:

在 /api/mymodel/1/ 字段名myCamelCaseField 配置不当 对模型 MyModel 无效。

任何想法我哪里出错了?

【问题讨论】:

  • 我猜你是在调用参数后引用的。代码无法访问。

标签: django django-rest-framework


【解决方案1】:

这可能是一个Indentation错误,它不应该在Meta类中

class MySerializer(serializers.ModelSerializer):
    myCamelCaseField = serializers.DateTimeField(source='my_snake_case_field')

    class Meta:
        model = MyModel
        fields = ('id', 'myCamelCaseField',)

【讨论】:

  • 啊!就是这样。谢谢。
【解决方案2】:

例如试试这个:

现在你在调用它之前已经分配了myCamelCaseField

class MySerializer(serializers.ModelSerializer):

    myCamelCaseField = serializers.DateTimeField(source='my_snake_case_field')
    class Meta:
        model = MyModel
        fields = ('id', 'myCamelCaseField', )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多