def post(self,request):

        data_dict = json.loads(request.body.decode())
        house_id = data_dict.get('house_id')
        start_date = data_dict.get('start_date')
        end_date = data_dict.get('end_date')
        user = request.user

        #判断完整
        if not all([house_id,start_date,end_date]):
            return JsonResponse({'errno': 400, 'errmsg': '缺少必传参数'})
        #是否存在
        try:
            house = House.objects.get(id=house_id)
        except Exception as e:
            return JsonResponse({"errno": 400, "errmsg": "房屋不存在"})
        #是否房主
        if user.id == house.user.id:
            return JsonResponse({"errno": 400, "errmsg": "是房主无法预定"})

        #跳转页面

        #判断是否传入错误数据
        try:
            d1 = datetime.datetime.strptime(start_date, '%Y-%m-%d')
            d2 = datetime.datetime.strptime(end_date, '%Y-%m-%d')
            assert d1 < d2, Exception('开始日期大于结束日期')
            days = (d2 - d1).days
            if days < 0:
                return JsonResponse({'errno': 400, 'errmsg': '日期有误'})
        except Exception as e:
            return JsonResponse({'errno': 400, 'errmsg': '参数有误'})

        #开启事务
        # with transaction.atomic():
        #
        #      save_id = transaction.savepoint()

         # try:
        amount = days * house.price

        if days < house.min_days:
            return JsonResponse({'errno': 400, 'errmsg': '住的时间太短'})

        if days > house.max_days:
            return JsonResponse({'errno': 400, 'errmsg': '住的时间太长'})
        order = Order()
        order.user_id = user.id
        order.house_id = house.id
        order.begin_date = d1
        order.end_date = d2
        order.days = days
        order.amount = amount
        order.house_price = house.price
        order.status = Order.ORDER_STATUS['WAIT_ACCEPT']

        order.save()

        # order = Order.objects.create(user_id=user.id,
        #                              house_id=house_id,
        #                              begin_date=d1,
        #                              end_date=d2,
        #                              days=days,
        #                              amount=amount,
        #                              # # status=Order.ORDER_STATUS['PAID'],
        #                              price=house.price,
        #                              )
        # 判断用户下单的时间段是否有别的订单

        count = Order.objects.filter(house_id=house_id,
                                         begin_date__lte=end_date,
                                         end_date__gte=start_date).count()
        if count > 0:
            # 说明房子被别人预定
            # transaction.savepoint_rollback(save_id)
            return JsonResponse({'errno': 400, 'errmsg': '房子已被预定'})

             # except Exception as e:
             #     transaction.savepoint_rollback(save_id)
             #     return JsonResponse({'errno': 400, 'errmsg': '下单失败'})

            #提交事务

             # transaction.savepoint_commit(save_id)
        return JsonResponse({'errno': 0, 'errmsg': '添加订单成功',  "data": {"order_id": order.pk}})