Có rất nhiều cách để giải quyết vấn đề mà bạn đã mô tả:
- Logic ứng dụng
- Lôgic của chế độ xem - Nếu hành vi dành riêng cho một chế độ xem thì hãy đặt các thay đổi vào chế độ xem.
- Lôgic của mô hình cụ thể - Nếu hành vi dành riêng cho một mô hình thì ghi đè phương thức save () cho mô hình.
- Logic phần mềm trung gian - Nếu hành vi liên quan đến nhiều mô hình HOẶC cần bao quanh một ứng dụng hiện có, bạn có thể sử dụng tín hiệu trước lưu / sau lưu để thêm các hành vi bổ sung mà không thay đổi chính ứng dụng.
- Thủ tục Lưu trữ Cơ sở dữ liệu - Bình thường là một khả năng, nhưng ORM của Django không sử dụng chúng. Không di động trên các cơ sở dữ liệu.
- Trình kích hoạt Cơ sở dữ liệu - Không thể di chuyển từ cơ sở dữ liệu này sang cơ sở dữ liệu khác (hoặc thậm chí là phiên bản cơ sở dữ liệu này sang phiên bản tiếp theo), nhưng cho phép bạn kiểm soát hành vi được chia sẻ trên nhiều ứng dụng (có thể không phải của Django).
Cá nhân tôi thích sử dụng ghi đè phương thức save () hoặc sử dụng tín hiệu Django. Sử dụng logic theo chế độ xem cụ thể có thể giúp bạn bắt kịp các ứng dụng lớn có nhiều chế độ xem của (các) mô hình giống nhau.