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
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,)