วิธีสร้างระบบ ERP สำหรับการผลิตรถยนต์โดยใช้ Django, Docker Compose, PostgreSQL และ DRF สำหรับ API

การสร้างระบบ ERP สำหรับการผลิตรถยนต์ช่วยเพิ่มประสิทธิภาพการทำงานโดยการรวมกระบวนการต่างๆ เช่น การจัดการสต็อก การวางแผนการผลิต และการควบคุมคุณภาพเข้าด้วยกัน บทความนี้จะสอนวิธีสร้างระบบ ERP โดยใช้ Django, Docker Compose, PostgreSQL และ Django Rest Framework (DRF) สำหรับการทำ API เพื่อให้ได้ระบบที่มีประสิทธิภาพ สามารถปรับขยายได้ และง่ายต่อการใช้งาน

ทำไมต้องใช้ Django?

Django เป็นเฟรมเวิร์กที่เหมาะสมสำหรับการสร้างระบบ ERP ด้วยเหตุผลหลายประการ:

  1. การพัฒนาอย่างรวดเร็ว: ด้วยฟีเจอร์ในตัวเช่น ORM (Object-Relational Mapping), อินเตอร์เฟสสำหรับผู้ดูแลระบบ, และระบบการยืนยันตัวตน Django ช่วยให้คุณมุ่งเน้นที่การพัฒนาฟังก์ชันการทำงานที่สำคัญแทนการเขียนโค้ดพื้นฐาน
  2. ขยายขนาดได้ง่าย: Django สามารถจัดการกับปริมาณข้อมูลที่เพิ่มขึ้นและการใช้งานที่มากขึ้นได้ดี เหมาะสำหรับระบบ ERP ขนาดใหญ่
  3. ความปลอดภัย: Django มีมาตรการความปลอดภัยในตัว ป้องกันการโจมตีทั่วไป เช่น SQL Injection และ Cross-Site Scripting (XSS)
  4. โครงสร้างที่ชัดเจน: โครงสร้างของ Django ช่วยให้โค้ดมีการจัดการที่ดี ทำให้ระบบ ERP สามารถขยายและบำรุงรักษาได้ง่าย
  5. การเชื่อมต่อ API: ด้วย Django Rest Framework (DRF) Django สามารถเชื่อมต่อกับระบบอื่นๆ หรือแอปพลิเคชันผ่าน API ได้อย่างมีประสิทธิภาพ

เทคโนโลยีที่ใช้

  • Django: เฟรมเวิร์กเว็บที่ใช้ภาษา Python ที่เหมาะสำหรับการพัฒนาแอปพลิเคชันที่ซับซ้อนและขยายขนาดได้
  • Docker Compose: เครื่องมือที่ช่วยในการรันแอปพลิเคชันที่มีหลายคอนเทนเนอร์
  • PostgreSQL: ระบบฐานข้อมูลแบบโอเพนซอร์สที่มีความสามารถสูงสำหรับจัดการข้อมูลขนาดใหญ่
  • DRF: เครื่องมือสำหรับสร้าง API ใน Django ซึ่งให้ความยืดหยุ่นในการจัดการคำขอ HTTP

วิธีสร้างระบบ ERP ทีละขั้นตอน

1. ตั้งค่าโปรเจกต์ด้วย Docker Compose

เริ่มต้นด้วยการสร้างโฟลเดอร์โปรเจกต์และตั้งค่าไฟล์ docker-compose.yml เพื่อกำหนดบริการต่างๆ สำหรับ Django และ PostgreSQL

mkdir car_manufacturing_erp
cd car_manufacturing_erp

สร้างไฟล์ docker-compose.yml เพื่อจัดการคอนเทนเนอร์สำหรับ Django และ PostgreSQL:

version: '3'

services:
  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      POSTGRES_DB: car_manufacturing_db
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secretpassword
      POSTGRES_HOST_AUTH_METHOD: trust
    ports:
      - "5432:5432"

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/app
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      POSTGRES_DB: car_manufacturing_db
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secretpassword
      POSTGRES_HOST: db
      POSTGRES_PORT: 5432

volumes:
  postgres_data:

ไฟล์นี้กำหนดสองบริการคือ:

  • db: บริการนี้ทำหน้าที่เป็น PostgreSQL โดยใช้ environment variables สำหรับการกำหนดค่า
  • web: บริการนี้รัน Django โดยใช้ environment variables สำหรับการเชื่อมต่อกับ PostgreSQL

2. สร้างโปรเจกต์ Django ด้วย Docker Compose

ใช้ Docker Compose เพื่อสร้างโปรเจกต์ Django ในคอนเทนเนอร์:

docker compose run web django-admin startproject car_erp .

คำสั่งนี้จะสร้างโปรเจกต์ Django ในคอนเทนเนอร์และแผนที่ไปยังระบบไฟล์ในเครื่องของคุณ

สร้างแอปสำหรับฟังก์ชันหลักของ ERP เช่น การจัดการรุ่นรถยนต์ ชิ้นส่วน และคำสั่งผลิต:

docker compose run web python manage.py startapp erp_core

3. กำหนดค่าการเชื่อมต่อ PostgreSQL ใน Django

ปรับการตั้งค่าฐานข้อมูลในไฟล์ settings.py เพื่อใช้ environment variables ที่กำหนดในไฟล์ docker-compose.yml:

import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': os.getenv('POSTGRES_DB'),
        'USER': os.getenv('POSTGRES_USER'),
        'PASSWORD': os.getenv('POSTGRES_PASSWORD'),
        'HOST': os.getenv('POSTGRES_HOST', 'db'),
        'PORT': os.getenv('POSTGRES_PORT', '5432'),
    }
}

การตั้งค่านี้ช่วยให้การเชื่อมต่อฐานข้อมูลทำได้อย่างยืดหยุ่นโดยดึงค่าจาก environment variables

4. สร้างโมเดลข้อมูลสำหรับการผลิตรถยนต์

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

ในไฟล์ models.py:

from django.db import models

class CarModel(models.Model):
    name = models.CharField(max_length=255)
    year = models.IntegerField()
    production_line = models.CharField(max_length=255)

    def __str__(self):
        return f"{self.name} ({self.year})"

class CarPart(models.Model):
    part_name = models.CharField(max_length=255)
    part_number = models.CharField(max_length=100, unique=True)
    car_model = models.ForeignKey(CarModel, related_name='parts', on_delete=models.CASCADE)
    cost = models.DecimalField(max_digits=10, decimal_places=2)
    supplier = models.CharField(max_length=255)
    stock_quantity = models.IntegerField()

    def __str__(self):
        return f"{self.part_name} (Part No: {self.part_number})"

class Inventory(models.Model):
    part = models.ForeignKey(CarPart, on_delete=models.CASCADE)
    stock_quantity = models.IntegerField()
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)

class Machine(models.Model):
    name = models.CharField(max_length=255)
    status = models.CharField(maxlength=50)

class ProductionOrder(models.Model):
    order_number = models.CharField(max_length=255, unique=True)
    car_model = models.ForeignKey(CarModel, on_delete=models.CASCADE)
    machine = models.ForeignKey(Machine, on_delete=models.CASCADE)
    start_time = models.DateTimeField()
    end_time = models.DateTimeField(null=True, blank=True)

5. สร้าง API ด้วย Django Rest Framework

สร้าง serializers สำหรับโมเดลเหล่านี้ในไฟล์ serializers.py เพื่อเปิด API ให้ใช้:

from rest_framework import serializers
from .models import CarModel, CarPart, Inventory, Machine, ProductionOrder

class CarPartSerializer(serializers.ModelSerializer):
    class Meta:
        model = CarPart
        fields = '__all__'

class CarModelSerializer(serializers.ModelSerializer):
    parts = CarPartSerializer(many=True, read_only=True)

    class Meta:
        model = CarModel
        fields = ['id', 'name', 'year', 'production_line', 'parts']

class InventorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Inventory
        fields = '__all__'

class MachineSerializer(serializers.ModelSerializer):
    class Meta:
        model = Machine
        fields = '__all__'

class ProductionOrderSerializer(serializers.ModelSerializer):
    class Meta:
        model = ProductionOrder
        fields = '__all__'

สร้าง views ในไฟล์ views.py เพื่อจัดการคำขอ API:

from rest_framework import generics
from .models import CarModel, CarPart, Inventory, Machine, ProductionOrder
from .serializers import CarModelSerializer, CarPartSerializer, InventorySerializer, MachineSerializer, ProductionOrderSerializer

class CarModelListCreateView(generics.ListCreateAPIView):
    queryset = CarModel.objects.all()
    serializer_class = CarModelSerializer

class CarPartListCreateView(generics.ListCreateAPIView):
    queryset = CarPart.objects.all()
    serializer_class = CarPartSerializer

class InventoryListCreateView(generics.ListCreateAPIView):
    queryset = Inventory.objects.all()
    serializer_class = InventorySerializer

class MachineListCreateView(generics.ListCreateAPIView):

    queryset = Machine.objects.all()
    serializer_class = MachineSerializer

class ProductionOrderListCreateView(generics.ListCreateAPIView):
    queryset = ProductionOrder.objects.all()
    serializer_class = ProductionOrderSerializer

6. รันระบบ ERP ด้วย Docker Compose

เพื่อเริ่มระบบ ให้รันคำสั่งสร้างและเริ่มคอนเทนเนอร์:

docker compose build
docker compose up

จากนั้นให้ใช้คำสั่งเพื่อใช้งานการย้ายฐานข้อมูล:

docker compose run web python manage.py migrate

แอปพลิเคชัน Django ของคุณจะสามารถเข้าถึงได้ที่ http://localhost:8000 และคุณสามารถจัดการ API สำหรับการจัดการรุ่นรถยนต์ ชิ้นส่วน สต็อก และคำสั่งผลิตได้ที่นี่

สรุป

ด้วยการใช้ Django, Docker Compose, PostgreSQL และ DRF คุณสามารถสร้างระบบ ERP ที่มีประสิทธิภาพและปรับขยายได้สำหรับการผลิตรถยนต์ ระบบนี้ช่วยในการจัดการรุ่นรถยนต์ ชิ้นส่วน สต็อก และคำสั่งผลิตได้อย่างมีประสิทธิภาพ ด้วยพลังของ Docker Compose การใช้งานและการจัดการโปรเจกต์จะกลายเป็นเรื่องง่ายและสะดวก

Articles

Our Products


Articles

Our Products


Get in Touch with us

Speak to Us or Whatsapp(+66) 83001 0222

Chat with Us on LINEiiitum1984

Our HeadquartersChanthaburi, Thailand