Django连接两个模型

时间:2018-01-19 18:11:49

标签: python django django-rest-framework

作为一个Django新手,我试图从两个模型返回JSON对象,每个对象包含用户名,id,ticketID。现在,代码只是将列表放在一起而不进行索引。我应该指出用户和票证之间存在关系,因此也可以遍历。

{“username”:“Paul”,“id”:2},{“username”:“Paul”,“id”:2},{“username”:“Ron”,“id”:19} ,{“id”:“1c6f039c”},{“id”:“6480e439”},  { “ID”: “a97cf1s”}

class UsersforEvent(APIView):
    def post(self, request):
        body_unicode = request.body.decode('utf-8')
        body = json.loads(body_unicode)
        value = body['event']
        queryset = Ticket.objects.filter(event = value)
        referenced_users = User.objects.filter(ticket_owner__in=queryset.values('id'))
        result_list = list(itertools.chain(referenced_users.values('username', 'id'), queryset.values('id')))
        return Response((result_list))

1 个答案:

答案 0 :(得分:1)

您应该执行单个查询以获取每个相关用户的故障单,然后从那里创建dicts列表。假设您的Ticket模型有一个"所有者"对用户来说是FK的字段:

queryset = Ticket.objects.filter(event=value).select_related('owner')
result_list = [{'ticket_id': ticket.id, 'username': ticket.owner.username, 'user_id': ticket.owner.id}
               for ticket in queryset]

(注意,这不应该是POST的操作;这是用于更改数据库中的数据,而不是查询。)