使用Django Rest Framework从pet模型获取数据时,获取category的外键值而不是id。我不确定将“子弹相关字段”放在何处。
class PetSerializer(serializers.ModelSerializer):
selected_category = serializers.SlugRelatedField(slug_field='selected_category',queryset=categoryType.objects.all())
class Meta:
model = pet
fields = '__all__'
型号
class pet(models.Model):
title = models.CharField(max_length=50)
category = models.ForeignKey(
"categoryType", on_delete=models.CASCADE, null=True, related_name='selected_category')
class categoryType(models.Model):
categoryName = models.CharField(max_length=50)
序列化器
class PetSerializer(serializers.ModelSerializer):
class Meta:
model = pet
fields = '__all__'
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = categoryType
fields = '__all__'
如果我请求我该怎么办
{
"id": 1,
"title": "dog",
"category": 2
},
我想得到什么
{
"id": 1,
"title": "dog",
"category": "Pet"
},
答案 0 :(得分:0)
我相信您可以通过两种方式实现这一目标。
您需要覆盖__str__()
的{{1}}方法并响应您的期望model_str()响应,在这种情况下,该响应为categoryType
名称。
categoryName
相关的link
另一种可能的解决方案是使用serailizerMethodField
并返回您对class categoryType(models.Model):
categoryName = models.CharField(max_length=50)
def __str__(self):
return self.categoryName
字段的期望响应。
category