Chào mừng các bạn đến với Rcom Dăm Yi blog - Kho tài liệu bổ ích!, Chúng tôi sẽ từng bước hoàn thiện để bạn đọc cảm thấy hài lòng, hữu ích!

Thứ Tư, 11 tháng 3, 2026

Kết hợp Pandas & Django: Quản Lý Thiết Bị Dạy Học

Kết Hợp Pandas & Django

Xây dựng hệ thống Quản lý Thiết bị dạy học từ dữ liệu Excel

1. File Excel Thiết Bị
2. Pandas Xử Lý & Import
3. SQLite Database
4. Django Web Interface

Bước 1: Khai báo cấu trúc thiết bị (Model)

Chúng ta cần một "khuôn mẫu" để lưu trữ thông tin thiết bị trong Database.

models.py
from django.db import models

class ThietBi(models.Model):
    ma_so = models.CharField(max_length=20, unique=True)
    ten_thiet_bi = models.CharField(max_length=200)
    phong_kho = models.CharField(max_length=100)
    so_luong = models.IntegerField(default=0)
    tinh_trang = models.CharField(max_length=50, default="Tốt")

    def __str__(self):
        return self.ten_thiet_bi

Bước 3: Viết Script Import bằng Pandas

Đây là phần quan trọng nhất: Đọc file Excel báo cáo cuối năm và đẩy thẳng vào SQLite của Django.

import_data.py
import pandas as pd
from main.models import ThietBi

def import_excel_to_db(file_path):
    # 1. Dùng Pandas đọc Excel
    df = pd.read_excel(file_path)
    
    # 2. Lặp qua từng dòng dữ liệu
    for index, row in df.iterrows():
        ThietBi.objects.update_or_create(
            ma_so=row['Mã TB'],
            defaults={
                'ten_thiet_bi': row['Tên'],
                'phong_kho': row['Phòng'],
                'so_luong': row['Số lượng'],
            }
        )
    print("Import hoàn tất!")
💡 Giải thích:
  • df.iterrows(): Giúp duyệt qua từng hàng trong file Excel như một danh sách.
  • update_or_create: Nếu thiết bị đã tồn tại (dựa trên Mã số) thì cập nhật thông tin mới, nếu chưa có thì tạo mới. Tránh trùng lặp dữ liệu.

Bước 8: Thống kê báo cáo nhanh

Kết hợp sức mạnh tính toán của Pandas để tạo báo cáo nhanh trên Web.

views.py
def thong_ke_thiet_bi(request):
    # Lấy dữ liệu từ SQLite chuyển thành DataFrame
    data = ThietBi.objects.all().values()
    df = pd.DataFrame(data)
    
    # Thống kê tổng số lượng theo từng phòng kho
    report = df.groupby('phong_kho')['so_luong'].sum().to_dict()
    
    return render(request, 'report.html', {'report': report})
💡 Giải thích: Thay vì viết các câu lệnh SQL phức tạp, chúng ta đưa dữ liệu về dạng DataFrame để tận dụng hàm groupby() của Pandas chỉ trong 1 dòng code.

Bước 9: Xuất báo cáo ngược lại Excel

Khi Hiệu trưởng yêu cầu báo cáo, bạn có thể xuất dữ liệu từ Web ra file Excel chuẩn chỉ bằng 1 cú click.

views.py
import io
from django.http import HttpResponse

def export_to_excel(request):
    df = pd.DataFrame(list(ThietBi.objects.all().values()))
    
    output = io.BytesIO()
    with pd.ExcelWriter(output, engine='openpyxl') as writer:
        df.to_excel(writer, index=False, sheet_name='ThietBi')
    
    response = HttpResponse(output.getvalue(), content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename=Bao_cao_thiet_bi.xlsx'
    return response

✅ Kết luận bài học

Sự kết hợp này mang lại quy trình khép kín:

  1. Dữ liệu đầu vào: Tận dụng các file Excel có sẵn từ kế toán/văn phòng.
  2. Lưu trữ: Dùng SQLite (đi kèm Django) nhẹ nhàng, không cần cài đặt server phức tạp.
  3. Hiển thị: Django giúp mọi giáo viên trong trường có thể truy cập qua mạng nội bộ để đăng ký mượn/trả thiết bị.

Không có nhận xét nào:

Đăng nhận xét

Bài đăng phổ biến

💬 Bình luận

💬 Bình luận

📌 Danh sách bình luận