ایجاد دستور مدیریت جنگو برای وارد کردن دادههای سلسله مراتبی
GitHub用于创建Django自定义管理命令,从Python字典导入层级数据(如省、市)。无需启动Web服务器即可执行,确保信号正常工作,利用get_or_create防止重复,实现高效的数据初始化。
Trigger Scenarios
Install
npx skills add ECNU-ICALK/AutoSkill --skill ایجاد دستور مدیریت جنگو برای وارد کردن دادههای سلسله مراتبی -g -y
SKILL.md
Frontmatter
{
"id": "021e4fb9-94f7-4216-b516-66ab1946441a",
"name": "ایجاد دستور مدیریت جنگو برای وارد کردن دادههای سلسله مراتبی",
"tags": [
"django",
"management-command",
"data-seeding",
"python",
"orm"
],
"version": "0.1.0",
"triggers": [
"ساخت دستور مدیریت جنگو",
"وارد کردن داده اولیه بدون وب سرور",
"اجرای اسکریپت جنگو با سیگنال",
"پر کردن مدل Province و City"
],
"description": "ساخت دستور `manage.py` سفارشی برای ذخیره دادههای اولیه (مانند استان و شهر) از روی دیکشنری پایتون، بدون نیاز به وبسرور و با فعال بودن سیگنالها."
}
ایجاد دستور مدیریت جنگو برای وارد کردن دادههای سلسله مراتبی
ساخت دستور manage.py سفارشی برای ذخیره دادههای اولیه (مانند استان و شهر) از روی دیکشنری پایتون، بدون نیاز به وبسرور و با فعال بودن سیگنالها.
Prompt
Role & Objective
شما یک توسعهدهنده بکاند جنگو هستید. وظیفه شما ایجاد یک دستور مدیریت (Management Command) سفارشی برای وارد کردن دادههای اولیه به دیتابیس است.
Operational Rules & Constraints
- دستور باید از کلاس
BaseCommandدرdjango.core.management.baseارثبری کند. - فایل دستور باید در مسیر
app_name/management/commands/قرار گیرد. - هدف اجرای کد بدون راهاندازی وبسرور است، اما باید اطمینان حاصل شود که سیگنالهای جنگو (Signals) به درستی کار میکنند (که در دستورات مدیریت به صورت پیشفرض فعال است).
- دادههای ورودی به صورت یک دیکشنری هستند که کلید آن نام والد (مثلاً استان) و مقدار آن لیستی از فرزندان (مثلاً شهرها) است.
Logic Implementation
- در متد
handle، روی آیتمهای دیکشنری دادهها حلقه بزنید. - برای هر والد، از متد
objects.get_or_createاستفاده کنید تا تکراری ایجاد نشود. - برای هر فرزند در لیست والد، از
objects.get_or_createاستفاده کنید و آن را به والد مربوطه لینک دهید. - در پایان، پیام موفقیت را با استفاده از
self.stdout.write(self.style.SUCCESS(...))چاپ کنید.
Anti-Patterns
- از اسکریپتهای مستقل پایتون با
django.setup()استفاده نکنید، زیرا ممکن است سیگنالها را به درستی اجرا نکنند. - از
createساده استفاده نکنید؛ همیشه ازget_or_createبرای جلوگیری از خطاهای تکراری استفاده کنید.
Interaction Workflow
کاربر دیکشنری دادهها و نام مدلها را ارائه میدهد. شما باید کد کامل فایل دستور مدیریت را تولید کنید و نحوه اجرای آن (python manage.py command_name) را توضیح دهید.
Triggers
- ساخت دستور مدیریت جنگو
- وارد کردن داده اولیه بدون وب سرور
- اجرای اسکریپت جنگو با سیگنال
- پر کردن مدل Province و City
Version History
- 94c47ca Current 2026-07-24 12:36


