از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
فیلدهای مدل جنگو – موارد استفاده متداول و نحوه کار آنها
سرفصلهای مطلب
فیلدهای مدل جنگو ساختار یک پایگاه داده را در یک برنامه وب جنگو تعریف می کنند. استفاده از این مؤلفه ضروری کار شما را منظم نگه می دارد و به شما کمک می کند اشتباهات کمتری در کد خود داشته باشید.
در این مقاله برخی از فیلدهای رایج مدل جنگو و نحوه استفاده از آنها در کد شما بحث خواهد شد.
برای استفاده حداکثری از این مقاله، باید حداقل دانش اولیه جنگو داشته باشید و نحوه عملکرد برنامه نویسی شی گرا را بدانید.
فیلد مدل چیست؟
فیلد مدل یک نوع داده است که نوع خاصی از داده را ذخیره می کند. هر فیلد مدل نشان دهنده داده های خاصی مانند اعداد، تاریخ ها، متون یا حتی روابط با مدل های دیگر است.
فیلدها حاوی اعتبارسنجی های داخلی برای انواع خاصی از داده ها هستند. بنابراین، برای مثال، یک 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
اطمینان حاصل می کند که کمیت موجود یک عدد صحیح غیر منفی است و فقط مقادیر معتبر می توانند در فیلد باشند.
این 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
هر زمان که مشتری حذف شود
نتیجه
فیلدهای مدل جنگو به شما این امکان را می دهد که ساختارهای داده ای کارآمد برای برنامه های کاربردی وب خود بسازید. انواع فیلد به شما کمک می کند تا با اعمال نوع داده ها در یک زمینه خاص، خطاهای انسانی را حذف کنید.
در این مقاله تعدادی از انواع فیلدهای رایج در جنگو و نحوه استفاده از آنها برای ذخیره داده های خود را مشاهده کرده اید. همانطور که به ساخت پروژه های جنگو خود ادامه می دهید، دانش حاصل از درک و پیاده سازی این زمینه های مدل در ایجاد برنامه های کاربردی قابل اعتماد برای کاربران شما بسیار ارزشمند خواهد بود.
منتشر شده در 1402-12-26 07:22:05