💎 ساختن چندتا ابجکت بصورت همزمان (bulk_create) در جنگو 💎
✔ امروز میخوایم در مورد یکی از قابلیتهای خیلی کاربردی جنگو به اسم Bulk Create صحبت کنیم. این قابلیت وقتی به دردتون میخوره که بخواید چندتا داده رو یکجا به دیتابیس اضافه کنید. مثلا فرض کنید میخواید اطلاعات ۱۰ تا محصول جدید رو تو فروشگاه آنلاینتون ثبت کنید. اگه بخواید هر کدوم رو تک تک سیو کنید که کلی وقتتون رو میگیره و اصلا به صرفه و بهینه نیست.
حالا ببینم Bulk Create چطوری کار میکنه؟🤔
به جای اینکه برای هر داده یه دستور سیو جداگانه بنویسیم، با Bulk Create میتونیم همه داده ها رو یکجا داخل یه لیست بریزیم و با یه دستور ساده همه رو با هم سیو کنیم. اینجوری سرعت کارمون خیلی بیشتر میشه و منابع سرور هم کمتر مصرف میشه. ⚡
1️⃣ مثال اول: اضافه کردن چندتا محصول جدید
فرض کنید مدل محصول ما این شکلیه:
حالا میخوایم چندتا محصول جدید به این شکل اضافه کنیم: 👇
با این کد، همه محصولات داخل لیست products یکجا به دیتابیس اضافه میشن. ✅
2️⃣ مثال دوم: اضافه کردن چندتا کامنت به یک پست
اینجا هم به همین صورت، همه کامنتها به یکجا به پست موردنظر اضافه میشن.
⭕ نکات مهم:
توجه❗: Bulk Create فقط برای ایجاد اشیاء جدید استفاده میشه. برای آپدیت کردن اشیاء موجود باید از روشهای دیگه استفاده کنید.
بهینه سازی ⏱️: برای بهبود عملکرد، سعی کنید تعداد اشیایی که در هر بار Bulk Create ایجاد میکنید رو بهینه کنید. خیلی زیاد یا خیلی کم بودن تعداد اشیاء میتونه روی عملکرد سیستم تاثیر بگذاره.
خطاها ⚠: اگر در حین اجرای Bulk Create خطایی رخ بده، هیچکدوم از اشیاء ایجاد نمیشن. پس حتما قبل از اجرا، دادهها رو به خوبی اعتبارسنجی کنید.
✅ جمعبندی
و در اخر Bulk Create یکی از ابزارهای قدرتمند جنگو است که به شما کمک میکنه تا عملیات ایجاد داده رو بهینه کنید. با استفاده از این قابلیت، میتونید به راحتی هزاران رکورد رو در کوتاهترین زمان ممکن به دیتابیس اضافه کنید. ⏱️
اگه دوست دارید درموردش بیشتر بدونید میتونید یه سر به داکیومنت خود جنگو بزنید 😁
امیدوارم این آموزش براتون مفید بوده باشه :)
#جنگو #BulkCreate #برنامه_نویسی #پایتون #توسعه_وب #django #python #webdevelopment
✔ امروز میخوایم در مورد یکی از قابلیتهای خیلی کاربردی جنگو به اسم Bulk Create صحبت کنیم. این قابلیت وقتی به دردتون میخوره که بخواید چندتا داده رو یکجا به دیتابیس اضافه کنید. مثلا فرض کنید میخواید اطلاعات ۱۰ تا محصول جدید رو تو فروشگاه آنلاینتون ثبت کنید. اگه بخواید هر کدوم رو تک تک سیو کنید که کلی وقتتون رو میگیره و اصلا به صرفه و بهینه نیست.
حالا ببینم Bulk Create چطوری کار میکنه؟🤔
به جای اینکه برای هر داده یه دستور سیو جداگانه بنویسیم، با Bulk Create میتونیم همه داده ها رو یکجا داخل یه لیست بریزیم و با یه دستور ساده همه رو با هم سیو کنیم. اینجوری سرعت کارمون خیلی بیشتر میشه و منابع سرور هم کمتر مصرف میشه. ⚡
1️⃣ مثال اول: اضافه کردن چندتا محصول جدید
فرض کنید مدل محصول ما این شکلیه:
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.FloatField()
description = models.TextField()
حالا میخوایم چندتا محصول جدید به این شکل اضافه کنیم: 👇
products = [
Product(name='گوشی آیفون 14', price=15000000, description='بهترین گوشی سال'),
Product(name='لپتاپ دل XPS 13', price=25000000, description='لپتاپ فوق سبک و قدرتمند'),
# ... و بقیه محصولات
]
Product.objects.bulk_create(products)
با این کد، همه محصولات داخل لیست products یکجا به دیتابیس اضافه میشن. ✅
2️⃣ مثال دوم: اضافه کردن چندتا کامنت به یک پست
class Comment(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
text = models.TextField()
comments = [
Comment(post=post, text='کامنت اول'),
Comment(post=post, text='کامنت دوم'),
# ... و بقیه کامنتها
]
Comment.objects.bulk_create(comments)
اینجا هم به همین صورت، همه کامنتها به یکجا به پست موردنظر اضافه میشن.
⭕ نکات مهم:
توجه❗: Bulk Create فقط برای ایجاد اشیاء جدید استفاده میشه. برای آپدیت کردن اشیاء موجود باید از روشهای دیگه استفاده کنید.
بهینه سازی ⏱️: برای بهبود عملکرد، سعی کنید تعداد اشیایی که در هر بار Bulk Create ایجاد میکنید رو بهینه کنید. خیلی زیاد یا خیلی کم بودن تعداد اشیاء میتونه روی عملکرد سیستم تاثیر بگذاره.
خطاها ⚠: اگر در حین اجرای Bulk Create خطایی رخ بده، هیچکدوم از اشیاء ایجاد نمیشن. پس حتما قبل از اجرا، دادهها رو به خوبی اعتبارسنجی کنید.
✅ جمعبندی
و در اخر Bulk Create یکی از ابزارهای قدرتمند جنگو است که به شما کمک میکنه تا عملیات ایجاد داده رو بهینه کنید. با استفاده از این قابلیت، میتونید به راحتی هزاران رکورد رو در کوتاهترین زمان ممکن به دیتابیس اضافه کنید. ⏱️
اگه دوست دارید درموردش بیشتر بدونید میتونید یه سر به داکیومنت خود جنگو بزنید 😁
امیدوارم این آموزش براتون مفید بوده باشه :)
#جنگو #BulkCreate #برنامه_نویسی #پایتون #توسعه_وب #django #python #webdevelopment
👍12❤2