我有两个模型
class Influencer(models.Model):
full_name = models.CharField('Full Name',max_length=255)
username = models.CharField('Username',max_length=255,unique=True)
photo = models.URLField(blank=True,max_length = 500)
email_id = models.EmailField('Email Id',blank=True,max_length=500)
categories = models.ManyToManyField(Category,blank=True,max_length=400)
和 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而不是类别名称,如下所示:
其中category是一个包含类别ID的数组。 我想显示类别的名称,而不是其ID。
我认为可以使用Django Rest Framework嵌套序列化程序来实现,但是目前我不使用DRF。
答案 0 :(得分:1)
django中有一个natural_key
方法将id转换为字符串
在您的models.py文件中添加natural_key方法
class Category(models.Model):
name = models.CharField(max_length=400,)
def __str__(self):
return self.name
def natural_key(self):
return self.name
,然后在您的serializers.serializer
中通过use_natural_foreign_keys=True,
ser_query = serializers.serialize('json', influencers,indent=2,use_natural_foreign_keys=True,)
答案 1 :(得分:0)
将数组元素-整数值-转换为字符串,然后从包含其ID类别的dict或tuple中访问
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]