简体   繁体   English

Django-我们如何将dict和model对象作为json发送

[英]Django - How do we send dict and model objects as json

I have model classes BookDetails and ReaderReviews . 我有模型类BookDetailsReaderReviews

Here is my class in views.py that tries to return BookDetail info and also checks if the logged-in user already posted a review about this book. 这是我在views.py中的课程,它尝试返回BookDetail信息,还检查登录的用户是否已发布有关此书的评论。

user_review is a dict which checks if the user already posted a review. user_review是用于检查用户是否已发布评论的字典。 I would like to return user_review dict and book_info as json. 我想将user_review dict和book_info作为json返回。 I am not sure how to return the dict and model data. 我不确定如何返回字典和模型数据。

views.py: views.py:

class Book(DetailView):
    model = BookDetails
    context_object_name = "bookobject"

    def get_context_data(self, **kwargs):
        context = super(Book,self).get_context_data(**kwargs)
        context['book_reviews'] = ReaderReviews.objects.filter(review_id__exact=str(self.kwargs['pk']))
        return context


    def render_to_response(self, context, **response_kwargs):

        #import pdb; pdb.set_trace()

        #default value for review_flag
        user_review = {"review_flag":'0'}

        #Check if the user already posted review about the book
        for book_review in context['book_reviews']:

            if book_review.user.username == self.request.user.username:
                user_review["review_flag"] = '1'
                break

        #serialize book detail info, all reviews and user review flag dict
        user_review_json = json.dumps(user_review)
        book_info = serializers.serialize('json',list([context['bookobject']])+list(context['book_reviews']))

        data = json.dumps({"review_flag":user_review_json,"book_detail":book_info})


        return JsonResponse(data,encoder=DjangoJSONEncoder, safe=False, **response_kwargs)

it can be simply 可以很简单

jsondata = json.dumps(dict)
return HttpResponse(jsondata, content_type='application/json')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM