问题:
我想让表格的品牌列显示的是品牌表的name,而不是品牌_id的值。
解决:
后端方法:
方法一
class BrandModelNumberSerializer(serializers.ModelSerializer):
brand = serializers.SerializerMethodField()
class Meta:
model = BrandModelNumber
fields = "__all__"
def get_brand(self, obj):
return obj.brand.name
总之就是使用SerializerMethodField
,并写出get_brand
,让其返回你要显示的对象就行了
p.s.
SerializerMethodField在model字段显示中很有用。
方法二:
class BrandModelNumberSerializer(serializers.ModelSerializer):
brand_name = serializers.ReadOnlyField(source='brand.name')
# brand = serializers.SlugRelatedField(read_only=True ,slug_field='name') ①
# brand = serializers.StringRelatedField(label='类别') ②
class Meta:
model = BrandModelNumber
fields = "__all__"
这个方法就是增加一个序列化的字段brand_name
用来专门显示品牌的name。当前前端的表格columns
里对应的’brand’列要改成’brand_name’
代码块注释的①②也可以把brand显示name,但有个缺陷:
用来显示brand的id的字段没了,有时候还是需要获取id字段的,比如用来赋值select。。