2010-02-16 27 views
16

Tôi đang tạo một trang web rất đơn giản ở Django. Trên một trong các trang có một hộp ticker dọc. Tôi cần phải cung cấp cho khách hàng một cách để chỉnh sửa nội dung của hộp đánh dấu như là một HTMLField.Làm thế nào về việc có một SingletonModel ở Django?

Cách đầu tiên cần lưu ý là tạo mô hình Ticker chỉ có một phiên bản. Sau đó, tôi nghĩ, thay vì đảm bảo rằng chỉ có một trường hợp tồn tại, có lẽ có (hoặc phải có) một cái gì đó giống như một lớp học SingletonModel ở Django, giống như một mô hình bình thường, ngoại trừ nó đảm bảo không có nhiều hơn một cá thể được tạo ra ?

Hoặc có lẽ tôi nên giải quyết vấn đề của mình theo cách khác?

Trả lời

1

viết lại phương thức lưu của bạn để mỗi khi đối tượng Ticker được lưu, nó sẽ ghi đè lên đối tượng hiện có (nếu có).

+2

Có thể, nhưng sau đó tôi cũng muốn một vài thứ khác, chẳng hạn như không có nút "Thêm người khác" trong quản trị viên, và sau đó chúng tôi cũng có thể tạo một 'SingletonModel' cho tất cả những điều này. –

2

Tôi nghĩ rằng có một mô hình "singleton" là xấu xí; việc sử dụng câm của cơ sở dữ liệu quan hệ và giao diện người dùng không tốt, vì giao diện người dùng quản trị được xây dựng xung quanh làm việc với danh sách các đối tượng.

Thay vào đó, tôi muốn sử dụng một giải pháp chung như django-chunks hoặc django-flatblocks cho việc này.

+0

Đó thực sự là tốt hơn cho văn bản nhưng những gì về khối có liên quan đến các mô hình khác? Ví dụ, nếu bạn muốn liệt kê các dự án cụ thể trên trang chủ - bạn còn lại với 3 tùy chọn: a) hộp kiểm trên mô hình dự án (project.display_on_homepage) HOẶC b) singleton Homepage HOẶC c) thiết lập feincms hoặc CMS tương tự và thêm một loại nội dung cho nó. –

1

Một mô hình chỉ có một thể hiện, một singleton, đôi khi hữu ích cho những thứ như cài đặt chung mà bạn muốn chỉnh sửa từ quản trị viên thay vì đặt chúng trong cài đặt Django.py.

Có một số ứng dụng của bên thứ ba giúp triển khai các mô hình đơn lẻ và cải thiện giao diện quản trị, ví dụ: django-solo, django-singleton-admin, django-singletons.

8

Hãy thử django-solo, nó hoạt động trong django 1.5 + chắc chắn, django-singletons không hoạt động với 1,5+ vì nó sử dụng tính năng không dùng nữa.

Các vấn đề liên quan