مدل ها در Django
در این بخش به بررسی مدل ها در Django می پردازیم، یکی از مهمترین بخشهای هر فریمورک وب، بخش مدیریت دادهها و تعامل با پایگاه داده است. در Django، این مسئولیت بر عهده مدلها (Models) است. مدلها ستون فقرات برنامههایی هستند که با دادهها سر و کار دارند و ساختار اصلی دادهها را مشخص میکنند. به زبان ساده، مدلها نماینده جداول پایگاه داده در کد هستند و امکان ذخیره، بازیابی و مدیریت دادهها را به ما میدهند. این یعنی هر کلاسی که به عنوان مدل تعریف میکنیم، به یک جدول در پایگاه داده تبدیل میشود.
Django به عنوان یک فریمورک محبوب در جهان پایتون، امکاناتی ساده و در عین حال قدرتمند را برای کار با مدلها فراهم کرده است. با استفاده از مدلها، توسعهدهندگان میتوانند به سادگی و بدون نیاز به دانش عمیق از SQL، دادههای خود را مدیریت کنند. Django ORM (Object-Relational Mapping) به طور خودکار این مدلها را به جداول و فیلدهای SQL تبدیل میکند، و این کار برنامهنویسان را از پیچیدگیهای مستقیم SQL دور نگه میدارد. در این مقاله به بررسی مفهوم مدلها در Django، نحوه تعریف و استفاده از آنها، و چگونگی مدیریت ارتباطات دادهها خواهیم پرداخت.
تعریف مدلها در Django
برای تعریف یک مدل در Django، از کلاسهایی استفاده میکنیم که از کلاس models.Model
ارثبری میکنند. هر کدام از ویژگیهای این کلاسها نشاندهنده یک ستون در جدول پایگاه داده است و نوع هر ویژگی تعیینکننده نوع دادهای آن ستون است. به عنوان مثال، برای ذخیره نام و تاریخ تولد کاربران، میتوانیم از فیلدهای متنی و تاریخ استفاده کنیم.
مثال:
در این مثال، کلاس Person
یک مدل ساده است که دو فیلد name
و birth_date
دارد. name
یک رشته متنی با طول حداکثر ۱۰۰ کاراکتر و birth_date
یک فیلد تاریخ است. این مدل پس از مهاجرت (migration) به یک جدول در پایگاه داده تبدیل میشود.
توضیح فیلدها
CharField
: فیلدی برای ذخیره متن کوتاه که نیاز به تعیین حداکثر طول دارد.DateField
: فیلدی برای ذخیره تاریخ که مقادیر آن به صورت خودکار اعتبارسنجی میشوند.
انواع فیلدهای مدلها
Django انواع مختلفی از فیلدها را برای ذخیره انواع دادهها ارائه میدهد که به کاربران امکان میدهد به راحتی دادهها را با نوع مورد نظر ذخیره کنند. برخی از فیلدهای رایج عبارتند از:
- IntegerField: ذخیره اعداد صحیح.
- FloatField: ذخیره اعداد اعشاری.
- BooleanField: ذخیره مقادیر بولین (True/False).
- EmailField: ذخیره و اعتبارسنجی ایمیلها.
- URLField: ذخیره و اعتبارسنجی آدرسهای وب.
مثال:
در این مثال، مدل Product
سه فیلد دارد که نام محصول، قیمت و وضعیت موجودی آن را نشان میدهد. با استفاده از این فیلدها، میتوانیم دادههای محصول را به صورت سازمانیافته ذخیره کنیم.
توضیح فیلدها
FloatField
: برای ذخیره قیمت محصولات به کار میرود که مقدار اعشاری را ذخیره میکند.BooleanField
: برای ذخیره وضعیت موجودی که مقدار True یا False میگیرد.
روابط بین مدلها
در Django، میتوان مدلها را به یکدیگر مرتبط کرد. سه نوع رابطه اصلی وجود دارد:
- OneToOneField: ارتباط یک به یک بین دو مدل.
- ForeignKey: ارتباط یک به چند (که معمولاً برای ارتباط بین مدلهای مرتبط استفاده میشود).
- ManyToManyField: ارتباط چند به چند بین مدلها.
برای مثال، فرض کنید بخواهیم رابطه بین یک نویسنده و کتابهای او را مدلسازی کنیم. هر نویسنده میتواند چندین کتاب داشته باشد، اما هر کتاب تنها یک نویسنده دارد.
مثال:
در این مثال، Book
یک فیلد author
دارد که از ForeignKey
استفاده میکند. این فیلد ارتباطی یک به چند بین Author
و Book
ایجاد میکند، که نشاندهنده این است که یک نویسنده میتواند چندین کتاب داشته باشد.
توضیح رابطهها
ForeignKey
: این فیلد برای ارتباط چند به یک استفاده میشود و نیاز به مشخص کردن نحوه حذف داده مرتبط (مثلاًon_delete=models.CASCADE
) دارد.on_delete=models.CASCADE
: در صورت حذف نویسنده، تمامی کتابهای او نیز حذف میشوند.
مدیریت دادهها با استفاده از QuerySets
Django از QuerySetها برای بازیابی دادهها از پایگاه داده استفاده میکند. با استفاده از QuerySetها، میتوان به سادگی دادهها را فیلتر، مرتب و مدیریت کرد. هر مدل در Django به صورت پیشفرض یک مدیر (Manager) به نام objects
دارد که میتوان از آن برای انجام عملیات بر روی دادهها استفاده کرد.
مثال:
در این مثال، از متد all()
برای بازیابی تمام نویسندگان و از filter()
برای فیلتر کردن کتابها استفاده شده است.
توضیح QuerySet ها
all()
: همه رکوردها را از مدل انتخاب میکند.filter()
: رکوردها را بر اساس شرط مشخص فیلتر میکند.
اعمال مهاجرتها (Migrations) در Django
پس از تعریف یا تغییر مدلها، نیاز داریم که تغییرات را به پایگاه داده منتقل کنیم. این فرآیند در Django با مفهوم مهاجرتها (migrations) انجام میشود. با ایجاد مهاجرت، Django تغییرات مدلها را به فایلهایی تبدیل میکند که میتوانند پایگاه داده را با مدلهای جدید هماهنگ کنند.
مراحل انجام مهاجرت:
- اجرای دستور
makemigrations
برای ایجاد فایلهای مهاجرت. - اجرای دستور
migrate
برای اعمال تغییرات در پایگاه داده.
مثال:
python manage.py makemigrations
python manage.py migrate
این دستورات باعث میشود که هرگونه تغییر در مدلها (مثل افزودن یا تغییر فیلدها) در پایگاه داده نیز اعمال شود.
توضیح مهاجرتها
makemigrations
: فایلهای مهاجرت را ایجاد میکند.migrate
: تغییرات را به پایگاه داده اعمال میکند.
مدلها در Django ابزار اصلی برای مدیریت و تعامل با دادهها در برنامههای تحت وب هستند. با استفاده از مدلها، میتوان ساختار دادهها را به سادگی تعریف و از آنها در برنامه استفاده کرد. علاوه بر این، Django با فراهم کردن ابزارهایی مانند ORM و مهاجرتها، فرآیند مدیریت دادهها و تغییرات در پایگاه داده را بسیار ساده کرده است. این مقاله اصول اولیه مدلها در Django را بررسی کرد و راهنمایی جامع برای شروع کار با مدلها و مدیریت دادهها فراهم کرد.
منابع
آیا این مطلب برای شما مفید بود ؟