Người quản lý thường là điều gì đó bị ẩn khỏi các lập trình viên django mà django sử dụng để giao tiếp giữa mã model
và phần phụ trợ cơ sở dữ liệu.
Khi bạn truy vấn ORM django, bạn làm như vậy thông qua các cuộc gọi đến
from my_app.models import MyModel
mms = MyModel.objects.all()
Trong trường hợp này, objects
một phần của chức năng là những gì được trả lại bởi người quản lý. Nếu bạn muốn MyModel chỉ bao giờ có được blue
MyModel
trường (cơ sở dữ liệu có thể chứa red
mô hình quá) sau đó bạn có thể tạo một trình quản lý và hack mô hình của bạn do đó
class BlueManager(models.Manager):
def get_query_set(self):
return super(BlueManager, self).get_query_set().filter(colour='Blue')
class MyModel(models.Model):
colour = models.CharField(max_length=64)
blue_objects = BlueManager()
và gọi
MyModel.blue_objects.all()
sẽ chỉ trở lại các đối tượng có colour
là blue
. Lưu ý, đây là một cách rất nghèo để lọc các mô hình!
Thông thường, bạn cần phải sửa đổi giao diện Manager
nếu họ sửa đổi số QuerySet
mà người quản lý thường trả lại hoặc nếu bạn cần thêm truy vấn cấp "bảng" (thay vì hàng "django" hàng). documentation dành cho người quản lý khá hoàn chỉnh và chứa một vài ví dụ.
'Managers' khá một lớp django phức tạp, nếu bạn là người mới đến programmi Tôi muốn gắn bó với [hướng dẫn] (https://docs.djangoproject.com/en/dev/intro/tutorial01/) cho đến khi bạn tự tin hơn với mã. – danodonovan