فیلدهای مدل جنگو ساختار یک پایگاه داده را در یک برنامه وب جنگو تعریف می کنند. استفاده از این مؤلفه ضروری کار شما را منظم نگه می دارد و به شما کمک می کند اشتباهات کمتری در کد خود داشته باشید.

در این مقاله برخی از فیلدهای رایج مدل جنگو و نحوه استفاده از آنها در کد شما بحث خواهد شد.

برای استفاده حداکثری از این مقاله، باید حداقل دانش اولیه جنگو داشته باشید و نحوه عملکرد برنامه نویسی شی گرا را بدانید.

فیلد مدل چیست؟

فیلد مدل یک نوع داده است که نوع خاصی از داده را ذخیره می کند. هر فیلد مدل نشان دهنده داده های خاصی مانند اعداد، تاریخ ها، متون یا حتی روابط با مدل های دیگر است.

فیلدها حاوی اعتبارسنجی های داخلی برای انواع خاصی از داده ها هستند. بنابراین، برای مثال، یک IntegerField حروف الفبا را نمی پذیرد. هر زمینه ای برای هدفش خاص است.

فیلدهای رایج مدل جنگو

برای استفاده از فیلدهای جنگو باید ماژول مدل ها را از پایگاه داده جنگو وارد کنید. این اطمینان حاصل می کند که نوع داده ای که در ستون پایگاه داده خود ذخیره می کنید به خوبی تعریف شده است.

در این بخش انواع فیلدهای مدل رایج جنگو و نحوه استفاده از آنها بحث خواهد شد.

این CharField فیلد مدل

این فیلد کاراکترهای با طول متوسط ​​کوتاه یا رشته‌های متنی را ذخیره می‌کند که آن را برای ذخیره یک ویژگی مانند نام مناسب می‌کند. CharField دارد max_length هر بار که از فیلد استفاده می کنید باید پارامتری را مشخص کنید. اما زمانی که طول فیلد را مشخص نکنید، 255 کاراکتر پیش فرض است.

در زیر نمونه ای از نحوه استفاده آورده شده است CharField در کد شما:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=20)

در قطعه کد بالا، max_length حداکثر طول ویژگی ‘name’ را 20 کاراکتر تنظیم می کند.

این DateField فیلد مدل

این فیلد تاریخ ها را در مدل شما ذخیره می کند و دارای دو پارامتر اختیاری است (auto_now و auto_now_add). این auto_now پارامتر هر بار که داده ها را تغییر می دهید یا به روز می کنید، تاریخ را تنظیم می کند، در حالی که auto_now_add تنها زمانی که داده را ایجاد می کنید، تاریخ فیلد را تنظیم می کند.

در زیر مثالی از نحوه استفاده از فیلد تاریخ آورده شده است:

from django.db import models

class Product(models.Model):
    date_created = models.DateField(auto_now_add=True)
    date_updated = models.DateField(auto_now=True)
    

در قطعه کد بالا، ماژول محصول دارای دو است DateFieldس یکی تاریخ ایجاد داده ها را تعیین می کند و دیگری تاریخ به روز رسانی داده ها را تعیین می کند.

این DateTimeField فیلد مدل

این فیلد اطلاعات تاریخ و زمان را در یک مدل ذخیره می کند. درست مثل DateField، DateTimeField همچنین دارای دو پارامتر (auto_now و auto_now_add). آنها عملکرد مشابهی دارند، با این تفاوت که این قسمت زمان را نیز تنظیم می کند.

پیشنهاد می‌کنیم بخوانید:  چگونه یک سیستم توصیه فیلم بر اساس فیلتر مشارکتی بسازیم

این DecimalField فیلد مدل

این فیلد اعداد اعشاری را در یک پایگاه داده ذخیره می کند. می توانید از آن برای ذخیره مقادیر عددی مانند قیمت، وزن و ارتفاع استفاده کنید.

دارای دو پارامتر است که باید هنگام استفاده از آن مشخص کنید. آنها عبارتند از:

  • max_digit: این تعداد کل ارقام مجاز در عدد است. این شامل تمام ارقام سمت چپ و راست نقطه اعشار است. این عدد باید بزرگتر یا مساوی با اعداد_اعشاری باشد.
  • decimal_places: این تعداد ارقام سمت راست نقطه اعشار است.

در اینجا مثالی از نحوه ذخیره داده ها در DecimalField آورده شده است:

from django.db import models

class Product(models.Model):
    price = models.DecimalField(max_digits=6, decimal_places=2)

در قطعه کد بالا، تعداد ارقام در دو طرف نقطه اعشار 6 است. در همان زمان، تعداد ارقام اعشار برابر است با 2. بنابراین، برنامه شما فقط می تواند قیمت هایی مانند 2100.00 دلار را ذخیره کند.

این BooleanField فیلد مدل

این فیلد مقادیر بولی را ذخیره می کند. با این فیلد می توانید عملیات باینری ساده را انجام دهید.

مثلا:

from django.db import models

class Product(models.Model):
    add_to_cart = models.BooleanField(default=False)

در مدل محصول فوق، BooleanField روی مقدار پیش فرض False تنظیم شده است، به این معنی که محصولات به طور پیش فرض خارج از سبد خرید شما هستند. همچنین به این معنی است که می توانید در هر زمان برای افزودن یا حذف یک محصول از سبد خرید خود کلیک کنید.

این EmailField فیلد مدل

این EmailField شکل تخصصی است CharField که آدرس های ایمیل را ذخیره می کند. هنگامی که از این فیلد استفاده می کنید، مطمئن شوید که مقداری که ارائه می کنید یک آدرس ایمیل معتبر است. در غیر این صورت یک خطا برمی گرداند.

در اینجا نحوه استفاده از این فیلد در پروژه خود آورده شده است:

from django.db import models

class Customer(models.Model):
    email = models.EmailField()

برنامه فوق تضمین می کند که مشتری شما یک آدرس ایمیل معتبر را در پایگاه داده وارد می کند.

این TextField فیلد مدل

آ TextField حجم زیادی از داده های متنی را ذخیره می کند. این فیلد هنگام ذخیره داده های متنی که برای a خیلی طولانی هستند مفید است CharField. می تواند متون طولانی مانند پاراگراف ها و حتی کل اسناد را مدیریت کند.

در اینجا مثالی از نحوه استفاده از این فیلد آورده شده است:

from django.db import models

class Product(models.Model):
    comments = models.TextField()

در مثال بالا، مدل Product دارای یک است TextField به نام “نظرات”. این قسمت نظرات مشتری در مورد محصولات را ذخیره می کند.

این IntegerField فیلد مدل

این فیلد مقادیر صحیح را به صورت اعداد کامل ذخیره می کند. این مقادیر از -2147483648 تا 0 برای اعداد صحیح منفی و 0 تا 2147483647 برای اعداد صحیح مثبت متغیر است. بنابراین می تواند هر عدد صحیحی، چه مثبت و چه منفی را ذخیره کند.

با توجه به نیاز پروژه خود، می توانید این فیلد را محدود کنید که فقط یک مقدار مثبت یا منفی را با استفاده از آن ذخیره کند PositiveIntegerField یا NegativeIntegerField، به ترتیب.

در زیر نمونه ای از نحوه ذخیره داده ها در IntegerField آورده شده است:

from django.db import models

class Product(models.Model):
    available_quantity = models.PositiveIntegerField()

در این مثال، مدل دارای فیلدی است که تعداد محصولات موجود را ذخیره می کند. این PositiveIntegerField اطمینان حاصل می کند که کمیت موجود یک عدد صحیح غیر منفی است و فقط مقادیر معتبر می توانند در فیلد باشند.

پیشنهاد می‌کنیم بخوانید:  راهنمای شروع به کار با Next.js - ایجاد یک Next.js AppNext.js یک چارچوب جاوا اسکریپت منبع باز است که توسط Vercel برای بهبود برنامه های React با ویژگی هایی مانند رندر سمت سرور و تولید سایت استاتیک ایجاد شده است. به طور سنتی، React برای ایجاد برنامه های یک صفحه ای (SPA) استفاده می شود که محتوای آنها رندر می شود. روی سمت مشتری Next.js با اجازه دادن به توسعه دهندگان برای ایجاد...

این TimeField فیلد مدل

TimeField فیلدی است که اطلاعات زمانی را در مدل شما ذخیره می کند. درست مانند DateField دو پارامتر دارد.

در اینجا مثالی از نحوه استفاده از این فیلد آورده شده است:

from django.db import models

class Order(models.Model):
    time_placed = models.TimeField(auto_now_add=True)

در مثال بالا، time_placed هر زمان که سفارش جدیدی وجود داشته باشد، فیلد به طور خودکار زمان فعلی را نشان می دهد.

این ForeignKeyField فیلد مدل

این ForeignKey نوع فیلد یک رابطه چند به یک بین دو مدل ایجاد می کند. این فیلد زمانی مفید است که یک مدل (مدل فرزند) نیاز به ارجاع به مدل دیگر (مدل والد) داشته باشد. دارای دو پارامتر مورد نیاز است، کلاسی که مدل به آن مربوط است و the on_delete گزینه.

در زیر مثالی از نحوه استفاده از آن آورده شده است ForeignKey:

from django.db import models

class Customer(models.Model):
    email = models.EmailField()

class Order(models.Model):
    order_number = models.CharField(max_length=10)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)

این ForeignKey هر سفارش را در قطعه کد بالا به مشتری خاصی پیوند می دهد. همچنین به یک مشتری اجازه می دهد تا با بسیاری از سفارشات مرتبط باشد. این on_delete گزینه مشخص می کند که اگر یک مشتری ارجاع شده را حذف کنید، تمام سفارشات مربوط به آن مشتری نیز باید از پایگاه داده خارج شوند.

این ManyToManyField فیلد مدل

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

در اینجا مثالی از نحوه استفاده از این فیلد آورده شده است:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=20)

class Order(models.Model):
    order_number = models.CharField(max_length=10)
    products = models.ManyToManyField(Product)

در کد قبلی، مدل «سفارش» دارای یک فیلد «محصولات» است که رابطه چند به چند را با مدل «محصول» برقرار می‌کند. بنابراین، یک سفارش می تواند شامل چندین محصول باشد و یک محصول می تواند در چندین سفارش باشد.

این OneToOneField فیلد مدل

این OneToOne نوع فیلد یک رابطه یک به یک بین دو مدل ایجاد می کند. به این معنی که هر رکورد در یک مدل دقیقاً با یک رکورد از دیگری مطابقت دارد. این فیلد یک پارامتر الزامی دارد، کلاسی که مدل به آن مرتبط است.

در زیر مثالی از نحوه استفاده از آن آورده شده است OneToOneField:

from django.db import models

class Customer(models.Model):
    email = models.EmailField()

class CustomerProfile(models.Model):
    customer = models.OneToOneField(Customer, on_delete=models.CASCADE)
    phone_number = models.CharField(max_length=15)

در مثال بالا، CustomerProfile لینک به مشتری از طریق OneToOneField. این تضمین می کند که هر مشتری می تواند دقیقاً یکی داشته باشد CustomerProfile و هر کدام CustomerProfile فقط با یک مشتری مرتبط است. پارامتر اضافی on_delete=models.CASCADE به سادگی به برنامه می گوید که آن را حذف کند CustomerProfile هر زمان که مشتری حذف شود

نتیجه

فیلدهای مدل جنگو به شما این امکان را می دهد که ساختارهای داده ای کارآمد برای برنامه های کاربردی وب خود بسازید. انواع فیلد به شما کمک می کند تا با اعمال نوع داده ها در یک زمینه خاص، خطاهای انسانی را حذف کنید.

در این مقاله تعدادی از انواع فیلدهای رایج در جنگو و نحوه استفاده از آنها برای ذخیره داده های خود را مشاهده کرده اید. همانطور که به ساخت پروژه های جنگو خود ادامه می دهید، دانش حاصل از درک و پیاده سازی این زمینه های مدل در ایجاد برنامه های کاربردی قابل اعتماد برای کاربران شما بسیار ارزشمند خواهد بود.