Tôi đang viết một ứng dụng Django có mô hình dành cho Mọi người và tôi đã bị đánh lừa. Tôi đang gán các đối tượng Role cho những người sử dụng mối quan hệ Nhiều-Nhiều, trong đó Roles có tên và trọng lượng. Tôi muốn đặt hàng danh sách người của mình theo trọng lượng nặng nhất của họ. Nếu tôi làm People.objects.order_by ('- roles__weight'), thì tôi sẽ nhận được bản sao khi mọi người có nhiều vai trò được gán cho họ.Django: Đặt hàng một mô hình theo trường nhiều người đến nhiều người
Ý tưởng ban đầu của tôi là thêm trường không chuẩn hóa được gọi là nặng nhất vai trò - và sắp xếp theo đó. Điều này sau đó có thể được cập nhật mỗi lần một vai trò mới được thêm hoặc xóa khỏi người dùng. Tuy nhiên, nó chỉ ra rằng không có cách nào để thực hiện một hành động tùy chỉnh mỗi khi một ManyToManyField được cập nhật trong Django (yet, anyway). Vì vậy, tôi nghĩ rằng tôi có thể sau đó đi hoàn toàn overboard và viết một lĩnh vực tùy chỉnh, mô tả và quản lý để xử lý này - nhưng điều đó có vẻ vô cùng khó khăn khi ManyRelatedManager được tạo động cho một ManyToManyField.
Tôi đã cố gắng tìm ra một số SQL thông minh có thể làm điều này cho tôi - tôi chắc chắn rằng có thể có một truy vấn phụ (hoặc một vài), nhưng tôi lo lắng về nó sẽ không tương thích cơ sở dữ liệu backends Django hỗ trợ.
Có ai đã làm điều này trước đây - hoặc có bất kỳ ý tưởng nào để đạt được điều đó không?
Chỉ cần những gì tôi đã tìm kiếm. Tôi không chạy Django 1.1, nhưng tôi có thể sử dụng SQL đó trong trình quản lý tùy chỉnh của mình. Cảm ơn :) –