У меня есть работающее приложение python, которое я пытаюсь преобразовать в веб-приложение, используя django и django rest. Сейчас я просто хочу сделать почтовый запрос, содержащий некоторые данные:
{
"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']
Куда я должен поместить код для проверки данных запроса, и куда я должен поместить лог расчета c? Могу ли я поставить оба в классе представления, как показано ниже? И где к этому подходит сериализатор?
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