作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个模型:
class User(models.Model):
username = models.CharField()
和
class Post(models.Model):
text = models.TextField()
owner = models.ForeignKey(User)
使用这样的序列化器:
from rest_framework.serializers import ModelSerializer
class PostSerializer(ModelSerializer):
owner = serializers.Field(source='owner.id')
class Meta:
model = Post
fields = ['text', 'owner']
我收到所有带有所有者 ID 的帖子。我如何修改序列化程序以获取所有包含整个用户模型的所有者的帖子?
我试过了 from rest_framework.serializers import ModelSerializer
class PostSerializer(ModelSerializer):
owner = serializers.Field(source='owner')
class Meta:
model = Post
fields = ['text', 'owner']
但这只是用用户名替换了 id,而不是我预期的整个模型(因为用户的表示返回用户名字段)。
最佳答案
解决方案是像这样定义 UserSerializer 扩展 ModelSerializer
from rest_framework.serializers import ModelSerializer
class UserSerializer(ModelSerializer):
class Meta:
model = UserModel
fields = ['id', 'username']
然后在 PostSerializer 中使用:
from myapp import UserSerializer
from rest_framework.serializers import ModelSerializer
class PostSerializer(ModelSerializer):
owner = UserSerializer()
class Meta:
model = PostModel
fields = ['id', 'owner']
关于django - 如何在 django rest 框架中包含模型序列化的相关字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522084/
我是一名优秀的程序员,十分优秀!