django - 如何在 Django REST Framework 中更改字段名称

标签 django django-rest-framework

我正在尝试更改 DRF Serializer 中的模型字段名称,就像 SQL 中的别名一样。我尝试了不同的方法,但都没有成功。

模型.py

class Park(models.Model):
    name = models.CharField(max_length=256)
    alternate_name = models.CharField(max_length=256, blank=True)
    objects = models.GeoManager()

    class Meta:
        db_table = u'p_park'

    def __unicode__(self):
        return '%s' % self.name

    def alias_alternate_name(self):
        return self.alternate_name

序列化器.py

class ParkSerializer(serializers.ModelSerializer):

    location = serializers.Field(source='alias_alternate_name')
    #location = serializers.SerializerMethodField(source='alias_alternate_name')

    #alternate_name as location


    class Meta:
        model = Park
        fields = ('id', 'name', 'location')

我也曾尝试在 Django Queryset 中添加别名,但无法更改。

已更新

这是我面临的异常

AttributeError at /ViewName/ 'module' object has no attribute 'Field'

我该怎么做?

最佳答案

序列化器字段和序列化器中有一个非常好的功能,通常称为“源”,您可以在其中指定模型字段中的数据源。

class ParkSerializer(serializers.ModelSerializer):
    location = serializers.SomeSerializerField(source='alternate_name')

    class Meta:
        model = Park
        fields = ('other_fields', 'location')

其中 serializers.SomeSerializerField 可以是您的模型建议的 serializers.CharField,但也可以是任何其他字段。此外,您可以改为放置关系字段和其他序列化程序,这仍然会很有魅力。即,即使 alternate_name 是另一个模型的外键字段。

class ParkSerializer(serializers.ModelSerializer):
    locations = AlternateNameSerializer(source='alternate_name', many=true)

    class Meta:
        model = Park
        fields = ('other_fields', 'locations')

class AlternateNameSerializer(serializers.ModelSerialzer):
    class Meta:
        model = SomeModel

这也适用于创建、删除和修改请求。它有效地创建了序列化程序中的字段名称和模型中的字段名称的一对一映射。

关于django - 如何在 Django REST Framework 中更改字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958058/

相关文章:

django - 完整性错误 : null value in column "email" violates not-null constraint

python - 如何更改 Django Rest Framework 中多对多相关对象的表示

Django REST Framework 仅允许 super 用户访问 api Web View

python - 如何使用 Django Rest Framework 包含相关模型字段?

python - Urlize DRF 链接

python - 在多对一格式的 django 模型中有多个用户作为一个模型字段

python - 同步 celery 队列

django - 从 form.save 访问请求对象

django - 最大图像上传大小验证 Django REST API

html - 如何使用 axios 向 img html 标签发出视频流 http GET 请求?