nềnThêm quyền cho mỗi đối tượng để django quản trị
Tôi đang phát triển một ứng dụng django cho một trang web cho thuê nghỉ. Nó sẽ có hai loại người dùng, người thuê và người quản lý tài sản.
Tôi muốn người quản lý tài sản có thể quản lý tài sản cho thuê của họ trong quản trị viên django. Tuy nhiên, họ chỉ có thể quản lý tài sản của riêng họ.
Tôi nhận ra quản trị viên django mặc định không hỗ trợ tính năng này. Tôi tự hỏi có bao nhiêu rắc rối nó sẽ được thêm chức năng này, và, nếu nó khả thi, cách tốt nhất để xử lý nó là gì.
Goal
Lý tưởng nhất, tôi hình dung nó làm việc như thế này:
auth
đã cho phép điều khoản như thế này:
vacation | rental | Can add rental vacation | rental | Can change rental vacation | rental | Can delete rental
Tôi muốn thay đổi điều này để một cái gì đó như:
vacation | rental | Can add any rental vacation | rental | Can change any rental vacation | rental | Can delete any rental vacation | rental | Can add own rental vacation | rental | Can change own rental vacation | rental | Can delete own rental
giải pháp có thể
Làm thế nào khuôn khổ sẽ quyết định nếu thuê (hoặc bất kỳ) thuộc về người sử dụng? Tôi nghĩ rằng nó kiểm tra lớp vacation.Rental
để xem nó có một ForeignKey
đến auth.User
(có thể có một số tên cụ thể, như 'chủ sở hữu').
On tạo mới
vacation.Rental
, giá trị của lĩnh vựcForeignKey
sẽ buộc phải id của người dùng hiện hành. TrườngForeignKey
sẽ không được hiển thị trên biểu mẫu.Cho thuê danh sách, chỉ cho thuê với số
ForeignKey
khớp với người dùng hiện tại sẽ được hiển thị.Khi thay đổi video cho thuê, chỉ cho thuê với số
ForeignKey
khớp với người dùng hiện tại mới được hiển thị. TrườngForeignKey
sẽ không được hiển thị trên biểu mẫu.
Tất nhiên, điều này sẽ có thể làm việc cho bất kỳ mô hình có một trường thích hợp ForeignKey
, không chỉ là mô hình vacation.Rental
của chúng tôi.
Tính năng này có khả thi hay không, hoặc tôi có nên đi theo một hướng khác không?
biến chứng
Bây giờ, đây là một phần khó khăn; Tôi không chắc chắn làm thế nào để xử lý này. Giả sử Rental
có thể có nhiều "Hình ảnh thuê". RentalPhoto
có ForeignKey
đến Rental
.Người dùng có thể thêm ảnh vào video cho thuê của riêng mình. Tuy nhiên, ảnh không có người dùng ForeignKey
, vì vậy không có cách nào để trực tiếp tìm ra người sở hữu ảnh.
Điều này có thể được giải quyết bằng một số thủ thuật trong khuôn khổ, sau ForeignKey
s cho đến khi một đối tượng được tìm thấy với một số ForeignKey
cho người dùng không? Hoặc tôi có nên thực hiện một cách dễ dàng và cung cấp cho RentalPhoto
(và mọi thứ khác 'thuộc' để Rental
) riêng của mình ForeignKey
đến auth.User
thích hợp không? Cách tiếp cận thứ hai sẽ yêu cầu dự phòng không cần thiết, đầu tiên có thể yêu cầu phí xử lý không cần thiết ...
Nếu tôi hoàn toàn lạc lối xin đừng ngần ngại chỉ cho tôi đi đúng hướng. Cảm ơn trước sự giúp đỡ nào.
Cảm ơn, Anurag; nó không phải là chung chung như tôi muốn nhưng tôi sẽ xem xét nó. Làm thế nào tôi có thể buộc điều này vào 'auth' để các quyền mới của tôi hiển thị trong danh sách? –
@no xem chỉnh sửa. –