在queryset中使用.values()后,如何显示多对多字段的值?

时间:2019-07-01 06:55:48

标签: python django django-views

我为django应用程序编写了一个views函数,

 def index(request):
    influencers = Influencer.objects.all().order_by('followers').values()
    print(influencers)
    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).values()

    queryset = list(chain(paged_listings,user_list))
    content = {'total_page_count': paginator.num_pages,
               'influencer_count':paginator.count,
               'data': queryset}

    return JsonResponse(content)

它返回一个JSON对象。

问题是,当我在函数的第一行上使用.values()时,它没有在Respose中显示“多对多”字段中的值。

我尝试编写一个替代函数,该函数显示多对多字段中的值,但在通过分页输入即total_page_countinfluencer_count时显示错误。

替代功能如下:

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)
    paginate = {"total_pages":paginator.num_pages}
    queryset = list(chain(paged_listings,user_list))
    ser_query = serializers.serialize('json', queryset,indent=3,use_natural_foreign_keys=True)
    return HttpResponse(ser_query,content_type='application/json')

当我在查询集中包含分页时,会显示错误

'str' object has no attribute '_meta'

views函数的模型类是:

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)
    categories = models.ManyToManyField(Category,blank=True,max_length=400)
    hashtags = models.TextField('Hashtags',blank=True)

我希望在JSON响应中同时显示分页和ManyToMany字段信息。

我应该如何解决?

0 个答案:

没有答案