tgoop.com/djangolearn_ir/1147
Create:
Last Update:
Last Update:
دستور flush توی جنگو چکار میکنه؟
این دستور اینجوری اجرا میشه:
python manage.py flush
چکار میکنه؟
همه دیتاهای دیتابیس، بجز دیتاهای جدول migrations رو پاک میکنه. در واقع TRUNCATE میکنه.
سوال: TRUNCATE چیه؟
دستور TRUNCATE ربطی به جنگو نداره و دستور SQL هست. اینجوری معمولا نوشته میشه
TRUNCATE TABLE felan
فلان هم اسم جدولی هست که میخوای truncate کنی. این دستور همه دیتای جدول رو حذف میکنه، با این تفاوت که مثل DELETE لاگ نمیشه و خیلی سریع هست. لذا خطرناک هم هست . و البته identity یا همون Auto Increment رو ریست میکنه.
برای دیدن کد ع sql ع دستور flust می تونید بنویسید:
python manage.py sqlflush
راستی بعد از flush ، جنگو post_migrate میکنه.
نظر عمو جی پی تی در مورد post_migrate:
سیگنال post_migrate برای این طراحی شده که بعد از هر بار همگامسازی دیتابیس (migrate یا flush)، دادهها و تنظیمات لازم دوباره ساخته بشن.
چیزهایی که معمولا انجام میده:
ایجاد پرمیشنها برای تمام مدلها (هر بار بعد از flush، جدول auth_permission دوباره پر میشه).
ساخت گروهها یا دادههای پیشفرض که بعضی اپلیکیشنها نیاز دارن.
مثلا جنگو برای اپلیکیشن auth، همیشه پرمیشنهای add, change, delete, view رو دوباره ایجاد میکنه.
اجرای هر سیگنالی که تو پروژه به post_migrate وصل کردی.
مثلا اگر خودت کدی نوشتی که بعد از post_migrate یه کاربر پیشفرض یا دادهی خاص بسازه، اون هم دوباره اجرا میشه.
این post_migrate جالبه
اینجوری تستش کنید:
یه migrate الکی بزنید، پیغام میده که چیزی برای مایگریت نیست، اما کارهایی روی دیتابیس کرده.
مثلا برو و توی جدول auth_permission یکی از codename هارو تغییر بده. مثلا یه عدد آخرش اضافه کن.
بعد دوباره migrate رو بزن و باز میگه چیزی برای مایگریت نیست.
حالا برو جدول auth_permission رو ببین. یه سطر بهش اضافه شده
مقدارش چیه؟؟؟
اگه میدونی یا تست ش کردی، جواب رو کامنت کن 😁😈
BY جنگولرن
Share with your friend now:
tgoop.com/djangolearn_ir/1147