فیلدهای مختلف مدلها در جنگو
در جنگو، برای هر نوع داده مختلف، فیلدهای مختلفی در مدلها وجود دارند که به شما اجازه میدهند تا دادهها را به صورت بهینه و با انواع مختلف ذخیره کنید. در اینجا برخی از فیلدهای رایج جنگو که معمولاً در مدلها استفاده میشوند، معرفی شدهاند.
۱. CharField
این فیلد برای ذخیره رشتههای کوتاه استفاده میشود. معمولاً برای فیلدهایی مانند عنوانها، نامها، یا توصیفات کوتاه استفاده میشود.
ویژگیها: باید طول حداکثری برای آن تعیین شود (با max_length). برای ذخیره رشتههای با طول مشخص استفاده میشود.
مثال:
۲. IntegerField
این فیلد برای ذخیره اعداد صحیح (بدون اعشار) استفاده میشود. معمولاً برای فیلدهایی مانند تعداد، سن، رتبه و غیره استفاده میشود.
ویژگیها: فقط اعداد صحیح (منفی یا مثبت) را ذخیره میکند.
مثال:
۳. DateTimeField
این فیلد برای ذخیره تاریخ و زمان استفاده میشود. این فیلد میتواند تاریخ و زمان دقیق (شامل ساعت، دقیقه و ثانیه) را ذخیره کند.
ویژگیها: میتوان برای این فیلد از گزینههایی مانند auto_now و auto_now_add برای تنظیم خودکار تاریخ و زمان استفاده کرد. auto_now تاریخ و زمان را هنگام ذخیره شیء بهروزرسانی میکند. auto_now_add تاریخ و زمان را فقط هنگام ایجاد شیء تنظیم میکند.
مثال:
updated_at = models.DateTimeField(auto_now=True) # تاریخ و زمان آخرین بهروزرسانی
۴. ForeignKey
این فیلد برای ایجاد رابطه یک به چند (One-to-Many) بین دو مدل استفاده میشود. به عبارت دیگر، یک رکورد در مدل فعلی به یک رکورد در مدل دیگر اشاره میکند.
ویژگیها: به شما این امکان را میدهد که یک شیء مدل را به یک شیء مدل دیگر لینک کنید. معمولاً برای ایجاد ارتباط با جداول دیگر استفاده میشود (مثلاً ارتباط بین پستها و نویسندگان).
مثال:
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE) # ارتباط یک به چند
در این مثال، هر کتاب یک نویسنده دارد، و اگر نویسنده حذف شود، تمام کتابهای او نیز حذف میشوند (با استفاده از on_delete=models.CASCADE).
۵. ManyToManyField
این فیلد برای ایجاد رابطه چند به چند (Many-to-Many) بین دو مدل استفاده میشود. در این نوع رابطه، هر شیء از مدل یک میتواند به چند شیء از مدل دو مرتبط باشد و بالعکس.
ویژگیها: برای ذخیره روابطی که هر شیء از یک مدل میتواند به چند شیء از مدل دیگر مرتبط باشد (مانند ارتباط بین دانشآموزان و کلاسها).
مثال:
name = models.CharField(max_length=100)
class Course(models.Model):
title = models.CharField(max_length=100)
students = models.ManyToManyField(Student) # ارتباط چند به چند
در این مثال، یک دوره میتواند به چند دانشآموز مرتبط باشد و یک دانشآموز میتواند در چند دوره حضور داشته باشد.
نتیجهگیری
جنگو انواع مختلفی از فیلدها را برای ذخیره انواع دادهها در مدلها ارائه میدهد. این فیلدها به شما این امکان را میدهند که ساختار دادهها را به دقت مدلسازی کنید و رابطههای پیچیده بین دادهها را مدیریت کنید. استفاده از فیلدهای مناسب برای هر نوع داده، کمک میکند تا عملکرد برنامه بهینه و قابل مدیریت باشد.
