از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش ایجاد مدل ها در پروژه Django خود

سرفصلهای مطلب
اگر در حال ساختن چیزی با Django هستید ، یک چیز وجود دارد که نمی توانید از آن پرش کنید: ایجاد مدل. مدل ها قلب هر برنامه Django هستند. آنها تعریف می کنند که چگونه داده های شما ساختار یافته ، روش ذخیره آن در پایگاه داده و چگونه Django می تواند با آن ارتباط برقرار کند.
حال اگر تازه وارد جنگو هستید یا هنوز سر خود را به اصول اولیه می پیچید ، نگران نباشید. من هم آنجا بوده ام ممکن است مدل ها در ابتدا کمی مرعوب کننده به نظر برسند ، اما وقتی می بینید که چگونه کار می کنند ، بسیار ساده هستند.
من شما را از طریق همه چیز قدم می زنم – قدم به قدم – بنابراین تا پایان این پست ، شما نه تنها می دانید که چگونه مدل ها را بسازید ، بلکه روش استفاده از آنها را در پروژه های واقعی نیز می دانید.
بیایید وارد آن شویم.
این چیزی است که ما پوشش خواهیم داد:
-
یک مدل در جنگو چیست؟
-
روش ایجاد مدل ها در جنگو
-
مرحله 1: یک پروژه Django را شروع کنید (اگر قبلاً این کار را نکرده اید)
-
مرحله 2: مدل خود را تعریف کنید
-
مرحله 3: برنامه را ثبت کنید و پایگاه داده را ایجاد کنید
-
مرحله 4: ایجاد و استفاده از اشیاء
-
-
ویژگی های مدل اضافی که از آنها استفاده خواهید کرد
-
1. مقادیر پیش فرض
-
2. جدول زمانی خودکار
-
3. گزینه های متا مدل
-
-
با استفاده از مدل ها در Django Admin
-
متداول
-
افکار نهایی
یک مدل در جنگو چیست؟
یک مدل در Django فقط یک کلاس پایتون است که به Django می گوید چگونه می خواهید داده های شما به نظر برسد. جنگو از قسمت سخت (صحبت با پایگاه داده) مراقبت می کند ، بنابراین می توانید تمرکز کنید روی توصیف داده های خود در کد ساده پایتون.
در اینجا یک نمونه سریع از یک مدل اساسی آورده شده است:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
published_date = models.DateField()
price = models.DecimalField(max_digits=5, decimal_places=2)
بگذارید آن را بشکنم:
-
title
وتauthor
فقط متن های کوتاه هستند ، بنابراین من از آن استفاده می کنمCharField
بشر -
published_date
یک تاریخ است – به اندازه کافی آسان ، این همان چیزی است کهDateField
برای -
price
یک عدد با اعشار است ، بنابراینDecimalField
کار را انجام می دهد
هر خط یک قطعه از داده هایی را که می خواهم برای هر کتاب ذخیره کنم ، توصیف می کند. ساده ، درست است؟
روش ایجاد مدل ها در جنگو
مرحله 1: یک پروژه Django را شروع کنید (اگر قبلاً این کار را نکرده اید)
اگر کاملاً جدید هستید ، ابتدا به یک پروژه Django نیاز دارید:
django-admin startproject mysite
cd mysite
python manage.py startapp books
حالا شما یک برنامه Django به نام دارید books
جایی که می توانید مدل های خود را قرار دهید.
مرحله 2: مدل خود را تعریف کنید
داخل پوشه برنامه خود (books
) ، باز models.py
بشر اینجاست که مدل خود را تعریف می کنید.
در اینجا نمونه ای از دنیای واقعی تر است:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
birthdate = models.DateField()
def __str__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
summary = models.TextField()
isbn = models.CharField(max_length=13, unique=True)
published = models.DateField()
price = models.DecimalField(max_digits=6, decimal_places=2)
def __str__(self):
return self.title
آنچه در اینجا اتفاق می افتد:
-
من دو مدل ایجاد کرده ام:
Author
وتBook
بشر -
Book
رابطه باAuthor
با استفاده ازForeignKey
بشر این بدان معناست که یک نویسنده می تواند کتاب های زیادی داشته باشد. -
من استفاده می کنم
__str__()
برای بازگشت یک نام خوب وقتی به اشیاء در مدیر Django نگاه می کنم.
مرحله 3: برنامه را ثبت کنید و پایگاه داده را ایجاد کنید
قبل از اینکه Django بتواند از مدل های شما استفاده کند ، اطمینان حاصل کنید که برنامه شما به تنظیمات پروژه اضافه شده است.
باز mysite/settings.py
و پیدا کردن INSTALLED_APPS
لیست اضافه کردن 'books',
به آن:
INSTALLED_APPS = [
# other apps
'books',
]
اکنون ، مهاجرت ها را اجرا کنید تا جداول پایگاه داده برای مدل های خود ایجاد کنید:
python manage.py makemigrations
python manage.py migrate
اینگونه است که Django کد پایتون شما را به جداول پایگاه داده واقعی تبدیل می کند. دستور اول یک فایل مهاجرت (اساساً دستورالعمل های پایگاه داده) ایجاد می کند ، و دوم آن را اعمال می کند.
مرحله 4: ایجاد و استفاده از اشیاء
اکنون می توانید از این مدل ها در کد خود استفاده کنید. پوسته Django را باز کنید:
python manage.py shell
سپس این را امتحان کنید:
from books.models import Author, Book
from datetime import date
# Create an author
jane = Author.objects.create(name="Jane Austen", birthdate=date(1775, 12, 16))
# Create a book
book = Book.objects.create(
title="Pride and Prejudice",
author=jane,
summary="A novel about manners and marriage in early 19th-century England.",
isbn="1234567890123",
published=date(1813, 1, 28),
price=9.99
)
print(book)
Django این موارد را به طور خودکار در پایگاه داده شما ذخیره می کند.
ویژگی های مدل اضافی که از آنها استفاده خواهید کرد
1. مقادیر پیش فرض
شما می توانید به یک قسمت یک مقدار پیش فرض بدهید:
is_published = models.BooleanField(default=False)
2. جدول زمانی خودکار
اینها هنگام ردیابی زمان ایجاد شده یا به روز شده بسیار مفید هستند:
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
3. گزینه های متا مدل
برای سفارشی کردن مواردی مانند سفارش پیش فرض می توانید متا کلاس را اضافه کنید:
class Book(models.Model):
# fields...
class Meta:
ordering = ['published']
با استفاده از مدل ها در Django Admin
پانل مدیر داخلی Django یکی از بهترین قسمت های این چارچوب است. اما مدل های شما در آنجا ظاهر نمی شوند مگر اینکه آنها را ثبت کنید.
در books/admin.py
، اضافه کنید:
from django.contrib import admin
from .models import Author, Book
admin.site.register(Author)
admin.site.register(Book)
اکنون اجرا کنید:
python manage.py createsuperuser
سپس به http://127.0.0.1:8000/admin بروید ، وارد شوید و رونق بگیرید – مدل های شما با یک رابط کامل در آنجا هستند.
متداول
آیا می توانم بعد از ساخت آن یک مدل را تغییر دهم؟
بله ، اما شما باید یک مهاجرت جدید انجام دهید:
python manage.py makemigrations
python manage.py migrate
چه پایگاه داده ای با Django کار می کند؟
Django با PostgresQL ، MySQL ، SQLITE (پیش فرض) و موارد دیگر کار می کند. بیشتر افراد هنگام یادگیری با SQLite شروع می کنند زیرا این کار آسان است و خارج از جعبه کار می کند.
چه تفاوتی بین چارفیلد و Textfield وجود دارد؟
استفاده کردن CharField
برای متن کوتاه با حداکثر طول (مانند یک نام یا عنوان). استفاده کردن TextField
برای متن طولانی تر (مانند پست وبلاگ یا خلاصه).
افکار نهایی
پس از درک مدل ها ، بقیه Django شروع به کلیک در محل می کنند. همه چیز – فرم ها ، نماها ، الگوها – در نهایت به مدل متصل می شود. اینگونه است که برنامه شما با داده های واقعی ذخیره و کار می کند.
بهترین راه برای یادگیری ساخت چیزی است. کوچک ، شاید یک کاتالوگ کتاب ، یک مدیر وظیفه یا یک وبلاگ شخصی را شروع کنید. مدل ها را یک بار اضافه کنید و در مدیر با آنها بازی کنید.
منابع بیشتر
-
اسناد رسمی Django – مدل ها
-
مرجع میدانی مدل Django
-
آموزش ساده جنگو – شبکه توسعه دهنده موزیلا
منتشر شده در 1404-04-26 01:23:11