我有一个正在工作的python应用,正在尝试使用django和django rest在webapp中进行转换。现在,我只想发出包含一些数据的发布请求:
{
"orderside" :"long",
"symbol" : "BTCUSDT",
"leverage" : "20",
"entry_price" : "100",
"order_cost" : "5.2",
"sl_price" :"99.4",
"tp_price" : "101.2"
}
基于此数据,我需要进行一些有效性检查和一些计算。如果数据有效,我想将结果作为贸易实体保存在数据库中(从请求到模型的映射没有1对1的关系)。
这是交易的模型:
from django.db import models
class Trade(models.Model):
created_datetime = models.DateTimeField(auto_now_add=True)
entry_filled_datetime = models.DateTimeField()
tp_sl_filled_datetime = models.DateTimeField()
orderside = models.CharField(max_length=10)
symbol = models.CharField(max_length=10)
leverage = models.PositiveSmallIntegerField()
entry_price = models.FloatField()
quantity = models.FloatField()
sl_price = models.FloatField()
tp_price = models.FloatField()
entry_id = models.CharField(max_length=25)
tp_id = models.CharField(max_length=25)
sl_id = models.CharField(max_length=25)
state = models.PositiveSmallIntegerField()
side = models.CharField(max_length=10)
class Meta:
ordering = ['created_datetime']
我必须在哪里放置用于验证请求数据的代码,在哪里放置计算逻辑?我可以像下面一样将它们都放在视图类中吗?串行器在哪里适合呢?
class TradeView(APIView):
def post(self, request, format=None):
if check_valid_request_data(request.data):
# do_calculations here and return model instance?
trade = do_calculations(request.data) # tuple for example
# save trade to db
trade.save()
return Response(status=status.HTTP_201_CREATED)
return Response(status=status.HTTP_400_BAD_REQUEST)
def check_valid_request_data(data):
# validation checklist
def do_calculations(data):
# calculate trade parameters like quantity etc
# return model instance from calculations and fields in request
您将创建一个类,TradeSerializer()
。验证将在该类的validate
方法中进行。新的Trade对象的创建将在TradeSerializer类的create方法中完成。
[This页面应回答您所有其他的后续问题。