cookie

نحن نستخدم ملفات تعريف الارتباط لتحسين تجربة التصفح الخاصة بك. بالنقر على "قبول الكل"، أنت توافق على استخدام ملفات تعريف الارتباط.

avatar

TorhamDev | تورهام 😳

ما کلیک نمیکنیم، ما کد می‌زنیم! • YouTube youtube.com/@techwithtori • Twitter twitter.com/TorhamDev • CodeNaline Podcast @CodeNaline • Group @programmer_dudes • Github github.com/TorhamDev • Email [email protected]

إظهار المزيد
مشاركات الإعلانات
2 115
المشتركون
لا توجد بيانات24 ساعات
+67 أيام
+11430 أيام

جاري تحميل البيانات...

معدل نمو المشترك

جاري تحميل البيانات...

چطور کوئری آپدیت بهتری داخل #جنگو بزنیم؟ روش‌های زیادی برای آپدیت کردن یک آجکت یا چندتا آبجکت داخل جنگو وجود داره، ساده ترین حالتی که افراد استفاده میکنن همچین چیزی. مدل فرضی:
class Records(models.Model):
    name = models.Charfield()
    balance = models.InetegerField()
    country =models.CharField()
برای مثال اگه کسی بخواد یک آبجکت از این مدل رو آپدیت کنه همچین کار میکنه:
r = Records.objects.get(pk=1)
r.name = "new name"
r.save()
که این اوکیه، بد نیست و آپدیت براتون انجام میده اما یک نکته رو بهش توجه نمیکنید! زمانی که شما یک آبجکت این شکلی آپدیت میکنید در اصل دارید تمام فیلد‌ها رو آپدیت میکنید :) ولی خب مقدار فیلدهای قبلی همون قبلی ها آپدیت میشه، برای اینکه از این کار جلو گیری کنید باید explicit ( نمیدونم، فکر کنم دقیق تر معنی بده) باشید یعنی، دقیقا بگید کدوم فیلد/فیلدها میخوایید آپدیت کنید. این کار میکنید با استفاده از پارامتر update_fields انجام بدید.
r = Records.objects.get(pk=1)
r.name = "new name"
r.save(update_fields=["name"])
البته باید مراقب باشید که حتما فیلدهایی که میخوایید آپدیت کنید رو داخلش بزارید مگرنه آپدیت نمیشن. پست بعدی آپدیت کردن چند آبجکت... @TorhamDevCH
إظهار الكل...
👍 13 7
تولدم مبارک 🎉 هدیه نمیگیرم ولی اگه کسی خواست بده میتونه تتر بزنه 😂❤️ My Public Address to Receive TRX TDzW3Q8DkenuYdoQFqsRE7mZZYuFhzZRAH Pay me via Trust Wallet: https://link.trustwallet.com/send?coin=195&address=TDzW3Q8DkenuYdoQFqsRE7mZZYuFhzZRAH
إظهار الكل...
Download and Install the Trust Wallet App

Explore the world of Web3 in your pocket with Trust Wallet. Download the app now.

19👎 3👍 2🍾 2😁 1🗿 1
بچه‌ها میتونید تسک‌هایی که شرکت‌ها بهتون دادن برای مصاحبه رو برام بفرستید لطفا؟ 👈👉🥹
إظهار الكل...
این پست درباره آپتومایز کردن read بود، پست فردا درباره اپتومایز کردن update میگم. اونم خیلی جالبه
إظهار الكل...
👍 4🆒 1
بیایید به بهانه آپتومایز کردن کوئری‌های #جنگو چندتا چیز جدید درباره ORM جنگو یاد بگیریم شما همیشه وقتی چیزی رو نیاز دارید داخل جنگو همچین کوئری میزنید:

Record.objects.filter(id__in=[1,2,3,4])
خب این قرار آبجکت‌هایی که ایدی ۱ تا ۴ دارن بهمون بده. حالا شما میخوایید با اینا یکسری پردازش انجام بدید مثلا بیایید اسم همه رکوردها رو نشون کار برید یا به عبارتی:

for r in records:
     print(record.name)
و کار شما اینجا تموم میشه و خوشحال میشید. اماااااااا شما یک عالمه پردازش بی جا انجام دادید و یک عالمه منابع الکی خرج کرید. بیایید ببینیم کوئری بالا وقتی sql میشه چه شکلی میشه:

SELECT id,
       name,
       created_at,
       is_deleted
FROM   records
WHERE  id IN (1, 2, 3, 4); 
این چیزی که داخل دیتابیس اجرا میشه. متوجه اش شدید؟ اگه نشدید باید بگم شما فقط به فیلد name نیاز داشتید اما تمام فیلدهای اون اون رکوردها رو گرفتید! هیچ وقت هم ازشون استفاده نکردید. برای حل این مشکل جنگو دوتا راه حل داره: 1. values 2. values_list با استفاده از این دو میتونید فقط فیلدهایی که میخوایید رو بگیرید. برای مثال:

Record.objects.filter(id__in=[1,2,3,4]).values('name')

و حالا کوئری که میسازید همچین چیزی خواهد شد:

SELECT name
FROM   records
WHERE  id IN (1, 2, 3, 4); 
و همینطور که میبینید حالا فقط اون فیلدی رو گرفتید که لازمش دارید. تفاوت بین values و valuse_list تنها در دیتا استراکچر خروجی که به شما میده و داخل کوئری نهایی هردو مثل هم عمل میکنن. برای درک بیشتر:

>>> Record.objects.filter(is_deleted=False).values('id', 'name')
<QuerySet [{'id': 1, 'name': 'First record'}, {'id': 2, 'name': 'Second Record'}, {'id': 3, 'name': 'Third Record'}]>

>>> Record.objects.filter(is_deleted=False).values_list('id', 'name')
<QuerySet [(1, 'First record'), (2, 'Second Record'), (3, 'Third Record')]>
بله یکی دیکشنری و دومی تاپل :) همچنین اگه فقط فقط یک فیلد میخوایید مثلا name میتونید از flat=True هم استفاده کنید برای بهتر شدن دیتا خروجی: ```python ````
إظهار الكل...
🙏 7👍 4👌 2 1
این چند روز اخیر داشتم رو این پروژه کار میکردم. خیلی چیزا جدید یادگرفتم. هنوز هم روش کار میکنم، هر روز که چیزا جدید میخونم روش پیاده میکنم، تا الان باب میل خودم هست :) حالا فرستادمش برای اهل فن‌ها تا مشکل بگیرن ازش بدم بیاد XD https://github.com/TorhamDev/simple-wallet-improved داخلش از جنگو - جنگو رست - رببیت - پستگرس استفاده کردم. @TorhamDevCH
إظهار الكل...
GitHub - TorhamDev/simple-wallet-improved: improved version of simple wallet

improved version of simple wallet. Contribute to TorhamDev/simple-wallet-improved development by creating an account on GitHub.

امروز یک پست جالب درباره آپتومایز کردن کوئری‌های جنگو مینویسم ✨✌️
إظهار الكل...
🔥 11❤‍🔥 2👍 1👌 1
بیا ۲ تا ممبر از دست دادیم. جمع کنید بخوابید
إظهار الكل...
ready for دلقک bazi💋
إظهار الكل...
اقا به جای ریکشن زد داکیومنت بخون
إظهار الكل...
اختر خطة مختلفة

تسمح خطتك الحالية بتحليلات لما لا يزيد عن 5 قنوات. للحصول على المزيد، يُرجى اختيار خطة مختلفة.