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

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

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

بیایید وارد آن شویم.

این چیزی است که ما پوشش خواهیم داد:

  1. یک مدل در جنگو چیست؟

  2. روش ایجاد مدل ها در جنگو

    • مرحله 1: یک پروژه Django را شروع کنید (اگر قبلاً این کار را نکرده اید)

    • مرحله 2: مدل خود را تعریف کنید

    • مرحله 3: برنامه را ثبت کنید و پایگاه داده را ایجاد کنید

    • مرحله 4: ایجاد و استفاده از اشیاء

  3. ویژگی های مدل اضافی که از آنها استفاده خواهید کرد

    • 1. مقادیر پیش فرض

    • 2. جدول زمانی خودکار

    • 3. گزینه های متا مدل

  4. با استفاده از مدل ها در Django Admin

  5. متداول

  6. افکار نهایی

یک مدل در جنگو چیست؟

یک مدل در 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

  • آموزش ساده جنگو – شبکه توسعه دهنده موزیلا