ایجاد مدلها با استفاده از کلاسهای پایتون در جنگو
در جنگو، مدلها با استفاده از کلاسهای پایتون ایجاد میشوند. هر کلاس که از کلاس models.Model ارثبری کند، به عنوان یک مدل در جنگو شناخته میشود. این کلاسها به طور خودکار به جداول پایگاه داده تبدیل میشوند.
در اینجا مراحل ایجاد یک مدل با استفاده از کلاسهای پایتون در جنگو توضیح داده میشود.
ساختار کلی مدلها با کلاسها
برای ایجاد یک مدل جدید در جنگو، باید یک کلاس جدید تعریف کنید که از models.Model ارثبری کند. فیلدهای مختلف مدل به عنوان ویژگیهای این کلاس تعریف میشوند. جنگو از نوع دادههای مختلفی برای فیلدها استفاده میکند که هر کدام برای ذخیره اطلاعات خاصی طراحی شدهاند.
نمونه مدل برای یک کتاب
در این مثال، مدل Book را ایجاد میکنیم که اطلاعات مربوط به یک کتاب را ذخیره میکند. مدل شامل فیلدهای عنوان، نویسنده، تاریخ انتشار و غیره است.
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) # شماره ISBN کتاب
pages = models.IntegerField() # تعداد صفحات کتاب
available = models.BooleanField(default=True) # وضعیت موجود بودن کتاب
def __str__(self):
return self.title
توضیح فیلدهای مدل
- CharField(max_length=200): این فیلد برای ذخیره رشتههایی با حداکثر طول 200 کاراکتر است. معمولاً از این فیلد برای ذخیره اطلاعات کوتاه مثل عنوان یا نامها استفاده میشود.
- DateField(): این فیلد برای ذخیره تاریخها (یعنی سال، ماه و روز) استفاده میشود.
- IntegerField(): برای ذخیره اعداد صحیح مانند تعداد صفحات.
- BooleanField(default=True): این فیلد تنها دو مقدار صحیح یا غلط را ذخیره میکند و به طور پیشفرض مقدار آن True است.
- unique=True: این ویژگی برای اطمینان از این است که مقدار این فیلد در پایگاه داده یکتا باشد، مثلاً شماره ISBN نباید تکراری باشد.
- __str__(self): متد __str__ برای تعیین نحوه نمایش شیء مدل به کار میرود. در اینجا نام کتاب به عنوان رشته نمایشی برمیگردد.
اجرای مهاجرتها (Migrations)
پس از تعریف مدل، باید مهاجرتها را انجام دهیم تا مدلها در پایگاه داده اعمال شوند. مراحل زیر را دنبال کنید:
- ایجاد مهاجرتها:
- اعمال مهاجرتها در پایگاه داده:
تعامل با مدلها از طریق Shell جنگو
برای تعامل با مدلها میتوان از Shell جنگو استفاده کرد:
- ابتدا وارد Shell شوید:
- سپس مدل Book را وارد کرده و با آن تعامل کنید:
# ایجاد یک کتاب جدید
book = Book(title="جنگو برای مبتدیان", author="جان دو", published_date="2025-01-15", isbn="1234567890123", pages=300)
book.save()
# نمایش تمام کتابها
books = Book.objects.all()
print(books)
# پیدا کردن یک کتاب خاص بر اساس ID
book = Book.objects.get(id=1)
print(book.title)
مدیریت مدلها در پنل ادمین جنگو
برای اینکه مدلها در پنل ادمین جنگو قابل مشاهده و مدیریت باشند، باید مدل را در فایل admin.py ثبت کنید:
from .models import Book
admin.site.register(Book)
اکنون میتوانید با ورود به http://127.0.0.1:8000/admin و با استفاده از پنل ادمین، دادههای مربوط به مدل Book را مدیریت کنید.
نتیجهگیری
در جنگو، مدلها به کمک کلاسهای پایتون ایجاد میشوند و این کلاسها از models.Model ارثبری میکنند. این ساختار به توسعهدهندگان این امکان را میدهد که با استفاده از کدهای پایتون ساده، مدلهای پیچیده برای ذخیرهسازی دادهها طراحی کنند و به راحتی با پایگاه داده تعامل داشته باشند.
