ทำระบบเว็บหนังออนไลน์ด้วย DJANGO: สร้างโมเดลสำหรับจัดการฐานข้อมูล โดย ทำเว็บไปกับคุณพ่อ
หมวดหมู่ การฝึกพัฒนาซอฟต์แวร์ | เขียนโดยคุณ ทำเว็บไปกับคุณพ่อ

ทำระบบเว็บหนังออนไลน์ด้วย DJANGO: สร้างโมเดลสำหรับจัดการฐานข้อมูล

โพสต์เมื่อ 6 เดือน ago | มีผู้อ่านทั้งหมด 477 คน

บทความอื่นๆ ของ ทำเว็บไปกับคุณพ่อ


     หลังจากเราได้ทำการเริ่มหน้าแรกของเว็บดูหนังออนไลน์ด้วย Django และ คัดลอกตัวเทมเพลตดูหนังออนไลน์สำหรับจะใช้ในโปรเจคนี้กันไปใช้แล้ว ขั้นตอนต่อไปเป็นขั้นตอนในการสร้างสิ่งที่เรียกว่า Object ในระบบของ เว็บดูหนังออนไลน์ของเราครับ จริงๆ มันก็จะคล้ายๆ กับแนวติดของ OOP หรือ object-oriented programming ที่เขียนทุกอย่าง อย่างเป็นลำดับและมีความเกี่ยวเนื่องกัน

     หากจะให้ยกตัวอย่างก็อาจจะเหมือน เด็กหนึ่งคน ที่ประกอบไปด้วย เลขประจำตัวประชนชน อายุ สีผิว และที่อยู่ของบ้าน หรืออาจจะยกตัวอย่างไกลไปนะ.. 

Kids
______
Name
Ages
Address

ถ้าเป็นโปรเจคหนังของเรา หนังหนึ่งเรื่องในนี้ก็จะประกอบไปด้วยข้อมูลดังนี้

Movie
______
title
description
images
category
created_date

     ซึ่งถ้าเริ่มมีความเข้าใจในส่วนนี้เบี้องต้นแล้วเราก็ไปต่อกันได้เลย แต่ใน Django มีข้อพิเศษตรงที่ว่า ทุกครั้งที่เรามีการอัพเดทหรือสร้างโมเดลต่างๆ ภายในบล็อก มันจะส่งผลไปยังฐานข้อมูลด้วย ทำให้การพัฒนาระบบต่างๆ ของเราสามารถทำได้อย่างสะดวกมากขึ้น.. โดยรูปแบบถ้ามองเป็นในมุมของตารางก็จะอยู่ประมาณนี้



     ต่อไปให้เราเข้าไปใน env ของเราเหมือนเดิม... ถ้าจำไม่ได้ว่าเข้ายังไงให้ดูในบทความก่อนหน้านี้ แล้วเราจะใช้คำสั่ง python manage.py startapp movie ตามตัวอย่างด้านล่างนี้ 

python manage.py startapp movie


หลังจากสร้างเสร็จแล้วไฟล์ของเราจะมีลักษณะประมาณนี้ หรือก็คือจะมีโฟลเดอร์ movie เพิ่มขึ้นมานั่นเองครับ

├───movie
│   └───migrations
└───moviesite
    └───__pycache__


ขั้นตอนต่อไปให้เราเข้าไปที่ movie/models.py เพื่อที่จะทำการแก้ไขไฟล์ โดยเมื่อเข้ามานั่นจะเป็นไฟล์โล่งๆ ให้ใส่ของมูลดังนี้


from django.db import models
from django_resized import ResizedImageField
# Create your models here.
class Movie(models.Model):
    title = models.CharField(max_length=255,verbose_name="ชื่อบทความ")
    image = ResizedImageField(size=[500, 300],crop=['middle', 'center'],upload_to="movie", blank=True, null=True)
    description = models.CharField(max_length=255,default="กรุณาระบุรายของหนัง")
    category =models.CharField(max_length=255,default="กรุณาระบุหมวดหมู่")
    view = models.IntegerField(default=0)
    created_date = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return self.title
        


ใส่เยอะแยะไปหมดมันคืออะไรกันนะ?

สรุปง่ายๆ ให้เข้าใจก็คือเป็นการสร้างก้อนข้อมูลขึ้นมาและในข้อมูลชุดนี้ก็จะประกอบไปด้วยรายละเอียดของหนังเรื่องนั้นๆ ไม่ว่าจะเป็น ชื่อหนัง รูปภาพหนัง รายละเอียดของหนัง และ หมวดหมู่ของหนัง เป็นต้น

class Movie(models.Model): ## ส่วนนี้เป็นการสร้าง Object ขึ้นมาชื่อว่า Movie
models.CharField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ ตัวอักษร
ResizedImageField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ รูปภาพ
models.IntegerField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ ตัวเลขจำนวนเต็ม
models.DateTimeField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ เวลาและวันที่
    def __str__(self):
        return self.title ## ส่วนนี้เป็นการบอกว่าให้โปรแกรมของเราทำการส่งค่าของ ชื่อหนังกลับมา


     หลังจากทำความเข้าในเรื่องของ Models กันได้เบื้องต้นแล้ว ต่อไปก็จะเป็นการนำ Models ที่เราออกแบบไว้ไปใส่ในฐานข้อมูลกันครับ โดยทั้งนี้ไม่ต้องมีความรู้เรื่องภาษา SQL เราก็สามารถทำได้อย่างง่ายๆ โดยใช้คำสั่ง python manage.py makemigrations movie

อันดับแรกเราต้องไปแก้ไขให้โปรเจค Django ของเรารู้ว่ามีการเพิ่ม App Movie เข้ามาก่อน โดยไปที่ settings.py ที่เคยทำกันก่อนหน้านี้ 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'movie', ##เพิ่มบรรทัดนี้ลงไป
]


จากนั้นให้ใช้คำสั่ง python manage.py makemigrations movie เพื่อให้ระบบของ Django เริ่มสร้างไฟล์สำหรับส่งไปที่ฐานข้อมูล

(env) C:\movieproject>python manage.py makemigrations movie
Migrations for 'movie':
  movie\migrations\0001_initial.py
    - Create model Movie


เนื่องจากมีการเพิ่มฟังก์ชั่นใหม่เข้ามาในเรื่องของการ Resize รูปภาพก่อนอัพโหลดขึ้นไป อาจจะทำให้หลายๆ ท่านไม่มีสามารถรันได้ สามารถแก้ปัญหาได้โดยติดนั้น django_resized โดยพิมพ์ pip install django_resized


และขั้นตอนสุดท้ายเพื่อให้สามารถสร้างฐานข้อมูลได้อย่างสมบูรณ์ เราจะต้องใช้คำสั่ง python manage.py migrate movie ซึ่งหน้าตาก็จะออกมาประมาณนี้

(env) C:\movieproject>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, movie, sessions
Running migrations:
  Applying movie.0001_initial... OK
(env) C:\movieproject>


โดยถ้าหากคุณมีโปรแกรมสำหรับเปิดฐานข้อมูลอยู่จะพบกับข้อมูล ประมาณนี้


คิดเห็นยังไงกับบทความของ ทำเว็บไปกับคุณพ่อ



บทความมาใหม่ที่อยากให้ลองอ่าน