Python 如何显示Django中多个字段中的值而不是它们的Id?

Python 如何显示Django中多个字段中的值而不是它们的Id?,python,django,django-models,Python,Django,Django Models,我有两种型号 影响者 及 2.类别 class Category(models.Model): name = models.CharField(max_length=400) def __str__(self): return self.name 影响者有多对多字段类别 “我的视图”显示所有影响者的功能是: def index(request): influencers = Influencer.objects.all().order_by('foll

我有两种型号

  • 影响者
  • 及 2.类别

    class Category(models.Model):
        name = models.CharField(max_length=400)
    
        def __str__(self):
            return self.name
    
    影响者有多对多字段类别

    “我的视图”显示所有影响者的功能是:

    def index(request):
        influencers = Influencer.objects.all().order_by('followers')
    
        paginator = Paginator(influencers,16)
        page = request.GET.get('page')
        paged_listings = paginator.get_page(page)
        user_list = UserList.objects.all().filter(user_id = request.user.id)  
        queryset = list(chain(paged_listings,user_list))
        ser_query = serializers.serialize('json', queryset)
        return HttpResponse(ser_query,content_type='application/json')
    
    HttpResponse包含类别id而不是类别名称,如下所示:

    其中categories是包含类别id的数组。 我想显示类别的名称,而不是它们的id


    我认为使用Django Rest Framework嵌套序列化程序可以实现这一点,但目前我没有使用DRF。

    将数组元素(整数值)转换为字符串,然后从包含类别及其ID的dict或元组进行访问

    id_to_category=["0":"whatever your category is","1":"whatever your category is","2":"whatever your category is","3":"whatever your category is"]
    
    id=str(ur_array[id])
    
    category_name=id_to_category[id]
    

    django中有一个
    natural_key
    方法将id转换为字符串

    在models.py文件中添加自然密钥方法

    class Category(models.Model):
        name = models.CharField(max_length=400,)
    
        def __str__(self):
            return self.name
    
        def natural_key(self):
            return self.name
    
    然后在您的
    序列化程序中。序列化程序
    您需要传递
    使用\u natural\u foreign\u keys=True,

    ser_query = serializers.serialize('json', influencers,indent=2,use_natural_foreign_keys=True,)
    

    不,绝对不是。您为什么推荐此选项?请查看我的更新答案。希望您的问题能够得到解决:)
    ser_query = serializers.serialize('json', influencers,indent=2,use_natural_foreign_keys=True,)