django序列化时使用外键的真实值操作( 二 )


```
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ('id', 'name')
def to_representation(self, obj):
return obj.name
```
在上述代码中 , 我们定义了一个CategorySerializer类 , 该类继承自Django原生的ModelSerializer类 , 并重写了to_representation方法 。该方法会在序列化时被调用 , 我们可以在其中返回外键对应的对象的某个属性 。例如 , 在上述代码中 , 我们返回了Category对象的name属性 。
然后 , 在PostSerializer中 , 我们可以使用CategorySerializer来序列化category字段 。例如 , 我们可以定义一个PostSerializer类 , 如下所示:
```
class PostSerializer(serializers.ModelSerializer):
title = serializers.CharField(max_length=100)
content = serializers.CharField()
category = CategorySerializer()
class Meta:
model = Post
fields = ('title', 'content', 'category')
```
在上述代码中 , 我们定义了一个PostSerializer类 , 该类继承自Django原生的ModelSerializer类 。在该类中 , 我们使用了CategorySerializer来序列化category字段 , 这样就可以返回category对象的详细信息了 。
五、总结
在Django中 , 序列化时使用外键的真实值操作可以通过重写to_representation方法或使用ForeignKey自定义序列化来实现 。通过这种方式 , 我们可以在API中返回外键的详细信息 , 提高API的可用性和可读性 。

猜你喜欢