Skip to content

Commit 94617d1

Browse files
committed
Fixed issue TypeError: int() argument must be a string, a bytes-like object or a real number, not 'QuerySet' when update_or_create
1 parent 6882aaa commit 94617d1

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

insert_data.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,23 @@ async def insert_data():
1919
position3 = await Position.create(symbol="GOOG", quantity=200, cost_basis=2800.00, client=client2)
2020

2121
# # Creating Market Data
22-
# market_data1 = await MarketData.create(symbol="AAPL", current_price=160.00, timestamp=datetime.now(pytz.utc))
23-
# market_data2 = await MarketData.create(symbol="TSLA", current_price=750.00, timestamp=datetime.now(pytz.utc))
24-
# market_data3 = await MarketData.create(symbol="GOOG", current_price=2900.00, timestamp=datetime.now(pytz.utc))
22+
market_data1 = await MarketData.create(symbol="AAPL", current_price=160.00, timestamp=datetime.now(pytz.utc))
23+
market_data2 = await MarketData.create(symbol="TSLA", current_price=750.00, timestamp=datetime.now(pytz.utc))
24+
market_data3 = await MarketData.create(symbol="GOOG", current_price=2900.00, timestamp=datetime.now(pytz.utc))
2525

2626
# Creating Margin for Clients
27-
margin1 = await Margin.create(client=client1, margin_requirement=0.25, loan=10000.00)
28-
margin2 = await Margin.create(client=client2, margin_requirement=0.3, loan=15000.00)
27+
margin1 = await Margin.create(client_id=client1.id, margin_requirement=0.25, loan=10000.00)
28+
margin2 = await Margin.create(client_id=client2.id, margin_requirement=0.3, loan=15000.00)
2929

3030
# Print out the data
3131
print(repr(client1))
3232
print(repr(client2))
3333
print(repr(position1))
3434
print(repr(position2))
3535
print(repr(position3))
36-
# print(market_data1)
37-
# print(market_data2)
38-
# print(market_data3)
36+
print(repr(market_data1))
37+
print(repr(market_data2))
38+
print(repr(market_data3))
3939
print(repr(margin1))
4040
print(repr(margin2))
4141
await Tortoise.close_connections()

main.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,13 @@ async def get_margin_status(clientId: int):
106106

107107
net_equity = Decimal(total_value) - Decimal(margin_account.loan).quantize(Decimal('0.001'), rounding=ROUND_UP)
108108
margin_account.margin_requirement = (Decimal(total_value) * Decimal(config.MMR)).quantize(Decimal('0.001'), rounding=ROUND_UP) # Example margin requirement calculation
109-
margin, created = await Margin.update_or_create(
110-
client_id=clientId,
111-
defaults={'margin_requirement': margin_account.margin_requirement, 'loan': margin_account.loan}
112-
)
109+
if margin_account:
110+
margin, created = await Margin.update_or_create(
111+
client_id=clientId, # <-- This ensures we are updating a specific record
112+
defaults={'margin_requirement': margin_account.margin_requirement, 'loan': margin_account.loan}
113+
)
114+
else:
115+
print("No margin account found for client_id:", clientId)
113116
margin_shortfall = max(margin_account.margin_requirement - net_equity, Decimal(0)).quantize(Decimal('0.001'), rounding=ROUND_UP)
114117
margin_call_triggered = margin_shortfall > 0
115118
# await Margin.update_or_create(client_id = clientId, margin_requirement=margin_account.margin_requirement,loan=margin_account.loan)

models.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ class MarketData(Model):
2323
id = fields.IntField(pk=True)
2424
symbol = fields.CharField(max_length=50)
2525
current_price = fields.FloatField()
26-
timestamp = fields.DatetimeField()
26+
timestamp = fields.DatetimeField(default=datetime.datetime.now)
2727
def __repr__(self):
2828
return f"<MarketData(id={self.id}, symbol={self.symbol}, current_price={self.current_price}, timestamp={self.timestamp})>"
2929

3030
class Margin(Model):
31-
client = fields.ForeignKeyField("models.Client", related_name="margins", pk=True, null=False)
31+
id = fields.IntField(pk=True) # Auto-increment primary key
32+
client = fields.ForeignKeyField("models.Client", related_name="margins", on_delete=fields.CASCADE)
3233
margin_requirement = fields.FloatField()
3334
loan = fields.FloatField()
34-
def __repr__(self):
35-
return f"<Margin(loan={self.loan}, symbol={self.margin_requirement}>"
35+
timestamp = fields.DatetimeField(default=datetime.datetime.now)

0 commit comments

Comments
 (0)