2015-03-19 3 views
-2

Я пытаюсь обработать запрос из моей базы данных модели TradeOrder:модели Джанго обработки

class TradeOrder(models.Model): 
    #denoted in 2 three letter tickers with underscore such as anc_btc 
    pair = models.CharField(max_length=50) 
    #buy_order or sell_order 
    order_type = models.CharField(max_length=50) 
    #number e.g. .3455 or .190 
    trade_rate = models.PositiveIntegerField() 
    trade_amount = models.PositiveIntegerField() 
    #name of the account 
    trade_order_account = models.CharField(max_length=50) 

    def __str__(self): 
     return '%s %s %s %s %s' % (self.pair, self.order_type, self.trade_rate, self.trade_amount, self.trade_order_account) 

, когда я исполняю под views.py для моего приложения

buyorders=TradeOrder.objects.filter(pair="anc_btc", order_type="buy_order") 

я получить список, который выглядит как это:

[<TradeOrder: anc_btc buy_order 7987 7897 a>, <TradeOrder: anc_btc buy_order 7897 789 a>, <TradeOrder: anc_btc buy_order 7897 789 a>] 

так нужно обработать и уточнить эти данные, во-первых, чтобы сравнить каждый элемент нового порядка

что-то вроде:

  if new_order_type=="buy_order": 
       #crosscheck against sell orders 
       market_sell_orders = TradeOrder.objects.filter(pair="anc_btc", order_type="sell_order", trade_order_account=price) 
       #now i need to sort the orders for trade rates above/greater than $new_order_price 
       #how do i do this? 

я теперь знаю, что это может быть достигнуто путем добавления .order_by('trade_order_price') в конце запроса

   if potential_sell_orders is not None: 
       #trade 
        do=1 
       else: 
        #no sell orders to fill, submit to order book 
        try: 
         tradeordersubmit=TradeOrder(pair=order_pair, order_type=order_type, trade_rate=price, trade_amount=quantity, trade_order_account=request.user.username) 
         tradeordersubmit.save() 
         order_error=0 
        except: 
         order_error="1" 
+0

И какова ваша фактическая проблема? –

+0

Я не знаю, что делать с '[, , ]' im довольно уверен, что его список, но Я не знаю, как разбить его и работать с ним. – abyss

+2

Это список экземпляров модели «TradeOrder», по одному на строку базы данных. Вы можете справиться с ними, как вы могли бы узнать в учебниках Django. –

ответ

0
now i need to sort the orders for trade rates above/greater than $new_order_price 

Вы должны уточнить QuerySet надлежащим использованием QuerySet методы:

market_sell_orders = TradeOrder.objects.filter(pair="anc_btc", order_type="sell_order", trade_order_account=price, trade_rate__gt=<trade_rate>).order_by('-trade_rate') 

Вы можете найти руководство по QuerySet here

+0

этот комментарий был полезен, но мне все еще не ясно, как работать с экземплярами после QuerySet. После завершения запроса и его сглаживания я бы хотел сделать что-то вроде 'для каждого экземпляра в market_sell_orders, #fill заказы , если market_sell_orders.instance_trade_amount <= new_order_trade_amount: dosomething = 1' – abyss

+0

Этот ответ был крайне полезен, i закончил вычислять все в наборе запросов api в предоставленной ссылке – abyss

Смежные вопросы