الگوریتم اول

لطفا صبر کنید...

مدل‌ها و نقش آن‌ها در جنگو

در جنگو، مدل‌ها (Models) بخشی از معماری MTV هستند که وظیفه مدیریت داده‌ها و تعامل با پایگاه داده را بر عهده دارند. مدل‌ها با استفاده از ORM (Object-Relational Mapping) جنگو پیاده‌سازی می‌شوند و این امکان را فراهم می‌کنند که بدون نیاز به نوشتن مستقیم SQL، داده‌ها را در پایگاه داده ذخیره، بازیابی، به‌روزرسانی و حذف کنیم.

ایجاد یک مدل در جنگو

مدل‌ها در فایل models.py هر اپلیکیشن تعریف می‌شوند. برای مثال، در اپلیکیشن myapp، می‌توان یک مدل Book برای مدیریت کتاب‌ها ایجاد کرد:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    published_date = models.DateField()
    isbn = models.CharField(max_length=13, unique=True)
    pages = models.IntegerField()
    available = models.BooleanField(default=True)

    def __str__(self):
        return self.title

توضیح فیلدهای مدل

  • CharField: برای ذخیره رشته‌هایی با طول مشخص.
  • DateField: برای ذخیره تاریخ.
  • IntegerField: برای ذخیره اعداد صحیح.
  • BooleanField: برای ذخیره مقدار صحیح/غلط.
  • unique=True: مقدار این فیلد نباید در دیتابیس تکراری باشد.
  • default=True: مقدار پیش‌فرض این فیلد True است.
  • __str__: متد __str__ مقدار نمایشی مدل را مشخص می‌کند که معمولاً نام خوانایی از شیء را بازمی‌گرداند.

اجرای مهاجرت‌ها (Migrations) برای ثبت مدل در پایگاه داده

پس از تعریف مدل، باید آن را در پایگاه داده اعمال کنیم. ابتدا دستور زیر را اجرا کنید تا مهاجرت‌های لازم ایجاد شوند:

python manage.py makemigrations

سپس برای اعمال این تغییرات در پایگاه داده، دستور زیر را اجرا کنید:

python manage.py migrate

تعامل با مدل‌ها از طریق Shell جنگو

برای کار با مدل‌ها می‌توان از Shell جنگو استفاده کرد:

python manage.py shell

و سپس:

from myapp.models import Book

# ایجاد یک شیء جدید و ذخیره در دیتابیس
book = Book(title="جنگو برای مبتدیان", author="جان دو", published_date="2025-01-15", isbn="1234567890123", pages=300)
book.save()

# دریافت تمام کتاب‌ها
books = Book.objects.all()
print(books)

# دریافت یک کتاب خاص
book = Book.objects.get(id=1)
print(book.title)

مدیریت مدل‌ها در پنل ادمین

برای مدیریت مدل‌ها در پنل ادمین جنگو، باید مدل را در فایل admin.py ثبت کنیم:

from django.contrib import admin
from .models import Book

admin.site.register(Book)

اکنون با اجرای سرور و ورود به http://127.0.0.1:8000/admin می‌توان داده‌های مدل Book را از طریق رابط گرافیکی مدیریت کرد.

نتیجه‌گیری

مدل‌ها در جنگو به ما این امکان را می‌دهند که به‌صورت شی‌گرا با پایگاه داده کار کنیم. جنگو با استفاده از ORM بسیاری از پیچیدگی‌های تعامل با دیتابیس را کاهش داده و فرآیند توسعه را سریع‌تر و ساده‌تر می‌کند.