تایپها
وقتی در فریمورک جنگو شروع به ساخت مدلهای دادهای میکنیم، اولین و مهمترین تصمیمی که باید بگیریم، انتخاب تایپ فیلد (Field Type) مناسب برای هر ستون داده است. فیلدها در جنگو نهتنها ساختار دادهها را در پایگاه داده مشخص میکنند، بلکه نحوه نمایش، اعتبارسنجی، ذخیرهسازی و حتی رفتار در فرمها و پنل ادمین را نیز تعیین میکنند. در این بخش، به بررسی تمامی انواع رایج و پیشرفته فیلدهای جنگو میپردازیم — از سادهترینها تا فیلدهای رابطهای و سفارشی.
🔹 فیلدها چه نقشی دارند؟
در تعریف مدل اشاره شد که هر مدل (Model) یک کلاس پایتونی است که از django.db.models.Model
ارثبری میکند. هر فیلد در این کلاس نیز، یک ویژگی (attribute) است که نمونهای از یکی از کلاسهای موجود در django.db.models
را نگه میدارد — مثل CharField
یا ForeignKey
. این فیلدها ...
- در زمان اجرای
makemigrations
وmigrate
به ستونهای جدول در دیتابیس تبدیل میشوند. - در فرمهای خودکار (ModelForm) و پنل ادمین، ویجتهای مناسب را ایجاد میکنند.
- اعتبارسنجی دادهها را بر اساس نوع و پارامترها انجام میدهند.
- امکان اعمال محدودیتهای دیتابیسی (مثل
UNIQUE
,NOT NULL
) را فراهم میکنند.
انتخاب نوع صحیح فیلد، تأثیر مستقیمی بر کارایی، صحت دادهها و تجربه کاربری خواهد داشت.
🧱 دستهبندی کلی فیلدها
فیلدهای جنگو را میتوان به چند دسته کلی تقسیم کرد:
- فیلدهای اسکالر (مقادیر ساده) — مثل متن، عدد، تاریخ
- فیلدهای رابطهای — برای اتصال مدلها به هم
- فیلدهای ساختاریافته و خاص — مثل فایل، تصویر، JSON
- فیلدهای عمومی و کمکی — مثل
AutoField
,GenericIPAddressField
در ادامه، هر دسته را بهصورت جزء به جزء بررسی میکنیم.