【发布时间】:2015-05-22 05:23:31
【问题描述】:
我正在尝试处理来自我的模型 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)
当我在 view.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"
【问题讨论】:
-
你的实际问题是什么?
-
我不知道如何处理
[<TradeOrder: anc_btc buy_order 7987 7897 a>, <TradeOrder: anc_btc buy_order 7897 789 a>, <TradeOrder: anc_btc buy_order 7897 789 a>]我很确定它是一个列表,但我不知道如何分解它并使用它 -
这是
TradeOrder模型的实例列表,每个数据库行一个。你可以像在 Django 教程中学到的那样处理它们。 -
@KlausD。当我查看手册 @docs.djangoproject.com/en/1.7/ref/models/instances 时,我真的只看到了基本的 CRUD 数据库相关功能,我仍然不清楚如何使用这些实例。有没有具体的教程可以指点我?
标签: python django django-models