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