ویژگی تصویر

Model ها در جنگو

  /  Django   /  مدل ها در 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 انواع مختلفی از فیلدها را برای ذخیره انواع داده‌ها ارائه می‌دهد که به کاربران امکان می‌دهد به راحتی داده‌ها را با نوع مورد نظر ذخیره کنند. برخی از فیلدهای رایج عبارتند از:

  1. IntegerField: ذخیره اعداد صحیح.
  2. FloatField: ذخیره اعداد اعشاری.
  3. BooleanField: ذخیره مقادیر بولین (True/False).
  4. EmailField: ذخیره و اعتبارسنجی ایمیل‌ها.
  5. URLField: ذخیره و اعتبارسنجی آدرس‌های وب.

مثال:

تماشا در حالت تمام صفحه

در این مثال، مدل Product سه فیلد دارد که نام محصول، قیمت و وضعیت موجودی آن را نشان می‌دهد. با استفاده از این فیلدها، می‌توانیم داده‌های محصول را به صورت سازمان‌یافته ذخیره کنیم.

توضیح فیلدها
  • FloatField: برای ذخیره قیمت محصولات به کار می‌رود که مقدار اعشاری را ذخیره می‌کند.
  • BooleanField: برای ذخیره وضعیت موجودی که مقدار True یا False می‌گیرد.

روابط بین مدل‌ها

در Django، می‌توان مدل‌ها را به یکدیگر مرتبط کرد. سه نوع رابطه اصلی وجود دارد:

  1. OneToOneField: ارتباط یک به یک بین دو مدل.
  2. ForeignKey: ارتباط یک به چند (که معمولاً برای ارتباط بین مدل‌های مرتبط استفاده می‌شود).
  3. 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 تغییرات مدل‌ها را به فایل‌هایی تبدیل می‌کند که می‌توانند پایگاه داده را با مدل‌های جدید هماهنگ کنند.

مراحل انجام مهاجرت:

  1. اجرای دستور makemigrations برای ایجاد فایل‌های مهاجرت.
  2. اجرای دستور migrate برای اعمال تغییرات در پایگاه داده.

مثال:

python manage.py makemigrations
python manage.py migrate

این دستورات باعث می‌شود که هرگونه تغییر در مدل‌ها (مثل افزودن یا تغییر فیلدها) در پایگاه داده نیز اعمال شود.

توضیح مهاجرت‌ها
  • makemigrations: فایل‌های مهاجرت را ایجاد می‌کند.
  • migrate: تغییرات را به پایگاه داده اعمال می‌کند.

مدل‌ها در Django ابزار اصلی برای مدیریت و تعامل با داده‌ها در برنامه‌های تحت وب هستند. با استفاده از مدل‌ها، می‌توان ساختار داده‌ها را به سادگی تعریف و از آن‌ها در برنامه استفاده کرد. علاوه بر این، Django با فراهم کردن ابزارهایی مانند ORM و مهاجرت‌ها، فرآیند مدیریت داده‌ها و تغییرات در پایگاه داده را بسیار ساده کرده است. این مقاله اصول اولیه مدل‌ها در Django را بررسی کرد و راهنمایی جامع برای شروع کار با مدل‌ها و مدیریت داده‌ها فراهم کرد.

منابع

  1. Django Documentation – Models
  2. Django Documentation – Making Queries
  3. Django Documentation – Migrations

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج