如何在Django Rest框架中获取外键的名称

时间:2019-11-11 01:38:29

标签: django-rest-framework

使用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"
    },

1 个答案:

答案 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