如何在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']
关于解决方案。这不是我想要的。我想将唯一的字段,而不是所有字段扩展到给定的深度。