我正在尝试将foreikey序列化为另一个名称。例如:
class User(models.Model):
user_name = models.CharField(..)
class Blog(models.Model):
user = models.ForeignKey(User, ...)
title = models.CharField(...)
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
fields = '__all__'
使用时BlogSerializer(blog_instance).data
可以获取数据:
{
"id": 1,
"user": 1,
"user_info": {"id": 1, "user_name": "admin"},
"title": "hello world"
}
我认为您只想为用户提供不同的表示形式,就可以通过以下技巧来改变它:
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
fields = '__all__'
def to_representation(self, instance):
ret = super().to_representation(instance)
# here you override the 'user' field, you can either use a dictionary
ret['user'] = {"id": instance.user.id, "user_name": instance.user.user_name}
# or better yet create an actual UserSerializer and get that representation, eg.
# ret['user'] = UserSerializer(context=self.context).to_representation(instance.user)
return ret
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句