Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django rest框架中包含与模型序列化相关的字段?_Django_Django Models_Django Rest Framework - Fatal编程技术网

如何在django rest框架中包含与模型序列化相关的字段?

如何在django rest框架中包含与模型序列化相关的字段?,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我有两种型号: class User(models.Model): username = models.CharField() 及 使用此类序列化程序: from rest_framework.serializers import ModelSerializer class PostSerializer(ModelSerializer): owner = serializers.Field(source='owner.id') class Meta: m

我有两种型号:

class User(models.Model):
  username = models.CharField()

使用此类序列化程序:

from rest_framework.serializers import ModelSerializer

class PostSerializer(ModelSerializer):
    owner = serializers.Field(source='owner.id')

    class Meta:
        model = Post
        fields = ['text', 'owner']
from myapp import UserSerializer
from rest_framework.serializers import ModelSerializer

class PostSerializer(ModelSerializer):
    owner = UserSerializer()

    class Meta:
        model = PostModel
        fields = ['id', 'owner']
我收到所有带有所有者ID的帖子。我如何修改序列化程序以获得包含整个用户模型的所有帖子

我试着 从rest_framework.Serializer导入ModelSerializer

class PostSerializer(ModelSerializer):
    owner = serializers.Field(source='owner')

    class Meta:
        model = Post
        fields = ['text', 'owner']

但这只将id替换为用户名,而不是我所期望的整个模型(因为用户的表示返回用户名字段)。

ModelSerializer
Meta
类中使用
depth
选项:

class PostSerializer(ModelSerializer):

    class Meta:
        model = Post
        fields = ['text', 'owner']
        depth = 1
还请注意,您不需要包括
作者
字段


文档。

解决方案是这样定义UserSerializer扩展ModelSerializer

from rest_framework.serializers import ModelSerializer

class UserSerializer(ModelSerializer):

    class Meta:
        model = UserModel
        fields = ['id', 'username']
然后在后序列化程序中使用它:

from rest_framework.serializers import ModelSerializer

class PostSerializer(ModelSerializer):
    owner = serializers.Field(source='owner.id')

    class Meta:
        model = Post
        fields = ['text', 'owner']
from myapp import UserSerializer
from rest_framework.serializers import ModelSerializer

class PostSerializer(ModelSerializer):
    owner = UserSerializer()

    class Meta:
        model = PostModel
        fields = ['id', 'owner']

关于解决方案。这不是我想要的。我想将唯一的字段,而不是所有字段扩展到给定的深度。