sbe*_*kov 3 django django-models django-rest-framework
我有两个型号:
class User(models.Model):
username = models.CharField()
Run Code Online (Sandbox Code Playgroud)
和
class Post(models.Model):
text = models.TextField()
owner = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
使用这样的序列化器:
from rest_framework.serializers import ModelSerializer
class PostSerializer(ModelSerializer):
owner = serializers.Field(source='owner.id')
class Meta:
model = Post
fields = ['text', 'owner']
Run Code Online (Sandbox Code Playgroud)
我得到了所有者ID的所有帖子.如何修改序列化程序以获取包含整个用户模型的所有者fialed的所有帖子?
我试着从rest_framework.serializers导入ModelSerializer
class PostSerializer(ModelSerializer):
owner = serializers.Field(source='owner')
class Meta:
model = Post
fields = ['text', 'owner']
Run Code Online (Sandbox Code Playgroud)
但是只用我想要的用户名而不是整个模型替换了id(因为User的表示返回了用户名字段).
解决方案是定义像这样扩展ModelSerializer的UserSerializer
from rest_framework.serializers import ModelSerializer
class UserSerializer(ModelSerializer):
class Meta:
model = UserModel
fields = ['id', 'username']
Run Code Online (Sandbox Code Playgroud)
然后在PostSerializer中使用它:
from myapp import UserSerializer
from rest_framework.serializers import ModelSerializer
class PostSerializer(ModelSerializer):
owner = UserSerializer()
class Meta:
model = PostModel
fields = ['id', 'owner']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2370 次 |
最近记录: |