django - 获取序列化器中字段的属性(django rest 框架)

标签 django django-rest-framework django-serializer

序列化程序.py

from django.contrib.auth.models import User
from engine.models import Game
from rest_framework import serializers

class GameSerializer(serializers.ModelSerializer):
    class Meta:
        model = Game
        fields = (
            'game_name',
            'level',
            'game_type',
            'creator',
            'id',
        )

我想获得 creator.username 因为 creator 只返回作为创建者的用户对象的 id 的整数。我怎样才能得到creator.username 而不是creator?

最佳答案

您可以按如下方式覆盖序列化程序方法字段以获得 creator.username 作为 creator 如下:

class GameSerializer(serializers.ModelSerializer):
    creator = serializers.SerializerMethodField(read_only=True)

    def get_creator(self, obj):
        # obj is model instance
        return obj.creator.username

    class Meta:
        model = Game
        fields = (
            'game_name',
            'level',
            'game_type',
            'creator',
            'id',
        )

关于django - 获取序列化器中字段的属性(django rest 框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49663829/

相关文章:

python - Django 原子请求是如何工作的?

python - 今天发生的 Django 过滤器事件

django - 导入错误: cannot import name 'MealSerializer' from partially initialized module 'delivery_api.main.serializers'

django - 如何通过序列化器发布数组数据?

Django:ModelSerializer 字段的初始值

django - 子类化 Django ModelForms

python - 当放置在 models.py 外部时,Django 信号不起作用

python - Django Rest 框架 - API View 提示 NoneType 响应

python - 使用 JWT token 对 Django Rest Framework 中的 POST 请求进行未经授权的响应

python - 返回为 JSON 字符串数组而不是键值数组