USER
from django.db import models
class FuturesPairs(models.Model):
name = models.CharField(
max_length=50,
unique=True,
verbose_name='نام جفت ارز'
)
def __str__(self):
return f"{self.name}"
class Meta:
db_table = 'tbl_futures_pairs'
verbose_name_plural = 'اسامی جفت ارزها'
@classmethod
def create_default_pairs(cls):
pairs_list = [
"1000MOGUS", "1000BONK", "1000CAT", "1000CHEEMS", "1000FLOKI", "1000LUNC",
"1000PEPE", "1000RATS", "1000SATS", "1000SHIB", "1000WHY", "1000XEC", "1INCH",
"1MBABYDOGE", "AAVE", "ACH", "ACT", "ACX", "ADA", "AERGO", "AERO", "AEVO",
"AGLD", "AKT", "ALGO", "ALICE", "ALPACAU", "ALPHA", "AMB", "ANKR", "APE",
"API3", "APT", "ARB", "ARKM", "ARK", "ARPA", "AR", "ASTR", "ATH", "ATOM",
"AUCTION", "AVA", "AVAX", "AXL", "AXS", "BADGER", "BAKE", "BAL", "BANANA",
"BAND", "BAN", "BAT", "BB", "BCH", "BEAMX", "BICO", "BIGTIME", "BLUR",
"BLZ", "BNB", "BNT", "BNX", "BOME", "BONE", "BRETT", "BSV", "BSW", "BTC",
"C98", "CAKE", "CATI", "CELO", "CELR", "CETUS", "CFX", "CHESS", "CHILLGUY",
"CHR", "CHZ", "CKB", "COMBO", "COMP", "COS", "COTI", "COW", "CRO", "CRV",
"CTSI", "CYBER", "DASH", "DEGEN", "DEGO", "DENT", "DGB", "DIA", "DODOX",
"DOGE", "DOGS", "DOT", "DRIFT", "DUSK", "DYDX", "DYM", "EDU", "EGLD",
"EIGEN", "ENA", "ENJ", "ENS", "EOS", "ETC", "ETHFI", "ETH", "ETHW", "FET",
"FIDA", "FIL", "FIO", "FLOW", "FLUX", "FOXY", "FTM", "FXS", "GALA", "GAS",
"GHST", "GLM", "GMT", "GMX", "GOAT", "GRASS", "GRT", "GTC", "G", "HBAR",
"HFT", "HIFI", "HIGH", "HIPPO", "HMSTR", "HOOK", "HOT", "ICP", "ICX", "ID",
"ILV", "IMX", "INJ", "IOST", "IOTA", "IOTX", "IO", "JASMY", "JOE", "JTO",
"JUP", "KAIA", "KAS", "KAVA", "KDA", "KNC", "KOMA", "KSM", "LDO", "LEVER",
"LINK", "LISTA", "LIT", "LOKA", "LPT", "LQTY", "LRC", "LSK", "LTC",
"LUMIA", "LUNA2", "MAGIC", "MAJOR", "MANA", "MANTA", "MASK", "MAV", "MAX",
"MBOX", "MEMEFI", "MEME", "MERL", "METIS", "MEW", "MINA", "MKR", "MOCA",
"MOODENG", "MORPHO", "MOVR", "MTL", "MYRO", "NEAR", "NEIROETH", "NEO",
"NFP", "NKN", "NMR", "NOT", "NTRN", "NULS", "OGN", "OL", "OMNI", "OM",
"ONDO", "ONE", "ONG", "ONT", "OP", "ORCA", "ORDI", "OXT", "PENDLE",
"PENGU", "PEOPLE", "PERP", "PHB", "PIXEL", "PNUT", "POL", "POLYX", "PONK",
"POPCAT", "PORTAL", "POWR", "PUFFER", "PYTH", "QNT", "QTUM", "QUICK",
"RARE", "RAY", "RDNT", "REI", "RENDER", "REZ", "RIF", "RLC", "RONIN",
"ROSE", "RPLUS", "RSR", "RUNE", "RVN", "SAFE", "SAGA", "SAND", "SCRT",
"SCR", "SEI", "SFP", "SKL", "SLERF", "SNX", "SOL", "SPELL", "SPX", "SSV",
"STEEM", "STG", "STMX", "STORJ", "STRK", "STX", "SUI", "SUN", "SUPER",
"SUSHI", "SWELL", "SXP", "SYN", "SYS", "TAO", "THETA", "THE", "TIA", "TLM",
"TNSR", "TON", "TRB", "TROY", "TRU", "TRX", "TURBO", "T", "TWT", "UMA",
"UNI", "USTC", "USU", "UXLINK", "VANA", "VANRY", "VELODROME", "VET",
"VIDT", "VIRTUAL", "VOXEL", "WAXP", "WIF", "WLD", "WOO", "WU", "XAI",
"XLM", "XMR", "XRP", "XTZ", "X", "XVS", "YFI", "YGG", "ZEC", "ZEN",
"ZETA", "ZIL", "ZKJ", "ZKU", "ZRO", "ZRX"
]
for pair in pairs_list:
if not cls.objects.filter(name=pair).exists():
cls.objects.create(name=pair)
from django.apps import AppConfig
class AppTraderConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app_trader'
verbose_name = 'اپلیکیشن تریدر'
def ready(self):
from .models import FuturesPairs
FuturesPairs.create_default_pairs()
کد بالا رو در نظر بگیر
من باهاش دارم کاری میکنم که وقتی سرور جنگو ران میشه مقادیر جفت ارز ها رو در داخل مدلا ذخیره کنه
کاری کن که سورس مربوط به اینکار رو کاملا داخل فایل apps.py نوشته بشه
ASSISTANT
برای تغییر کدی که نوشتید بهطوری که تمام منطق مربوط به ایجاد جفت ارزهای پیشفرض در `apps.py` قرار گیرد، شما میتوانید از سیگنالهای Django استفاده کنید تا در زمان راهاندازی اپلیکیشن، جفت ارزها را به طور پیشفرض در مدل ذخیره کنید. من کد شما را یک مقدار اصلاح میکنم تا تمام منطق درون `AppTraderConfig` پیادهسازی شود.
در ادامه، تغییرات لازم در `apps.py` را مشاهده میکنید:
### `apps.py`
```python
from django.apps import AppConfig
from django.db import models
class FuturesPairs(models.Model):
name = models.CharField(
max_length=50,
unique=True,
verbose_name='نام جفت ارز'
)
def __str__(self):
return f"{self.name}"
class Meta:
db_table = 'tbl_futures_pairs'
verbose_name_plural = 'اسامی جفت ارزها'
class AppTraderConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app_trader'
verbose_name = 'اپلیکیشن تریدر'
def ready(self):
self.create_default_pairs()
def create_default_pairs(self):
pairs_list = [
"1000MOGUS", "1000BONK", "1000CAT", "1000CHEEMS", "1000FLOKI", "1000LUNC",
"1000PEPE", "1000RATS", "1000SATS", "1000SHIB", "1000WHY", "1000XEC", "1INCH",
"1MBABYDOGE", "AAVE", "ACH", "ACT", "ACX", "ADA", "AERGO", "AERO", "AEVO",
"AGLD", "AKT", "ALGO", "ALICE", "ALPACAU", "ALPHA", "AMB", "ANKR", "APE",
"API3", "APT", "ARB", "ARKM", "ARK", "ARPA", "AR", "ASTR", "ATH", "ATOM",
"AUCTION", "AVA", "AVAX", "AXL", "AXS", "BADGER", "BAKE", "BAL", "BANANA",
"BAND", "BAN", "BAT", "BB", "BCH", "BEAMX", "BICO", "BIGTIME", "BLUR",
"BLZ", "BNB", "BNT", "BNX", "BOME", "BONE", "BRETT", "BSV", "BSW", "BTC",
"C98", "CAKE", "CATI", "CELO", "CELR", "CETUS", "CFX", "CHESS", "CHILLGUY",
"CHR", "CHZ", "CKB", "COMBO", "COMP", "COS", "COTI", "COW", "CRO", "CRV",
"CTSI", "CYBER", "DASH", "DEGEN", "DEGO", "DENT", "DGB", "DIA", "DODOX",
"DOGE", "DOGS", "DOT", "DRIFT", "DUSK", "DYDX", "DYM", "EDU", "EGLD",
"EIGEN", "ENA", "ENJ", "ENS", "EOS", "ETC", "ETHFI", "ETH", "ETHW", "FET",
"FIDA", "FIL", "FIO", "FLOW", "FLUX", "FOXY", "FTM", "FXS", "GALA", "GAS",
"GHST", "GLM", "GMT", "GMX", "GOAT", "GRASS", "GRT", "GTC", "G", "HBAR",
"HFT", "HIFI", "HIGH", "HIPPO", "HMSTR", "HOOK", "HOT", "ICP", "ICX", "ID",
"ILV", "IMX", "INJ", "IOST", "IOTA", "IOTX", "IO", "JASMY", "JOE", "JTO",
"JUP", "KAIA", "KAS", "KAVA", "KDA", "KNC", "KOMA", "KSM", "LDO", "LEVER",
"LINK", "LISTA", "LIT", "LOKA", "LPT", "LQTY", "LRC", "LSK", "LTC",
"LUMIA", "LUNA2", "MAGIC", "MAJOR", "MANA", "MANTA", "MASK", "MAV", "MAX",
"MBOX", "MEMEFI", "MEME", "MERL", "METIS", "MEW", "MINA", "MKR", "MOCA",
"MOODENG", "MORPHO", "MOVR", "MTL", "MYRO", "NEAR", "NEIROETH", "NEO",
"NFP", "NKN", "NMR", "NOT", "NTRN", "NULS", "OGN", "OL", "OMNI", "OM",
"ONDO", "ONE", "ONG", "ONT", "OP", "ORCA", "ORDI", "OXT", "PENDLE",
"PENGU", "PEOPLE", "PERP", "PHB", "PIXEL", "PNUT", "POL", "POLYX", "PONK",
"POPCAT", "PORTAL", "POWR", "PUFFER", "PYTH", "QNT", "QTUM", "QUICK",
"RARE", "RAY", "RDNT", "REI", "RENDER", "REZ", "RIF", "RLC", "RONIN",
"ROSE", "RPLUS", "RSR", "RUNE", "RVN", "SAFE", "SAGA", "SAND", "SCRT",
"SCR", "SEI", "SFP", "SKL", "SLERF", "SNX", "SOL", "SPELL", "SPX", "SSV",
"STEEM", "STG", "STMX", "STORJ", "STRK", "STX", "SUI", "SUN", "SUPER",
"SUSHI", "SWELL", "SXP", "SYN", "SYS", "TAO", "THETA", "THE", "TIA", "TLM",
"TNSR", "TON", "TRB", "TROY", "TRU", "TRX", "TURBO", "T", "TWT", "UMA",
"UNI", "USTC", "USU", "UXLINK", "VANA", "VANRY", "VELODROME", "VET",
"VIDT", "VIRTUAL", "VOXEL", "WAXP", "WIF", "WLD", "WOO", "WU", "XAI",
"XLM", "XMR", "XRP", "XTZ", "X", "XVS", "YFI", "YGG", "ZEC", "ZEN",
"ZETA", "ZIL", "ZKJ", "ZKU", "ZRO", "ZRX"
]
for pair in pairs_list:
if not FuturesPairs.objects.filter(name=pair).exists():
FuturesPairs.objects.create(name=pair)
```
### توضیح تغییرات
1. **انتقال متد `create_default_pairs` به `AppTraderConfig`:** این متد به سکشن `ready` اضافه شده است تا در زمان بارگذاری اپلیکیشن، جفت ارزهایی که در لیست دارند ذخیره شوند.
2. **استفاده از مدل `FuturesPairs` در همان فایل:** با import کردن مدل در همان فایلی که `AppConfig` قرار دارد، میتوانید به راحتی به آن دسترسی پیدا کنید.
اکنون وقتی سرور Django خود را اجرا کنید، جفت ارزها به طور خودکار در بانک اطلاعاتی ذخیره خواهند شد.