【发布时间】:2010-09-09 07:07:19
【问题描述】:
背景
我正在为度假租赁网站开发一个 django 应用程序。它将有两种类型的用户,租户和物业经理。
我希望物业经理能够在 django 后台管理他们的出租物业。但是,他们应该只能管理自己的属性。
我意识到默认的 django 管理员不支持这个。我想知道添加这个功能会有多麻烦,如果可行,最好的处理方法是什么。
目标
理想情况下,我想象它是这样工作的:
auth 已经允许这样的权限:
我想将其更改为:
假期 |出租|可以添加任何租金 假期 |出租|可以更改任何租金 假期 |出租|可以删除任何租借 假期 |出租|可以添加自己的租金 假期 |出租|可以改变自己的租金 假期 |出租|可以删除自己的租借可能的解决方案
框架将如何决定租赁(或其他)是否属于用户?我想它会检查vacation.Rental 类,看看它是否有一个ForeignKey 到auth.User(可能有一些特定的名称,比如“所有者”)。
在创建新的
vacation.Rental时,ForeignKey字段的值将被强制为当前用户的 ID。ForeignKey字段不会显示在表单上。在列出租借时,只会显示
ForeignKey与当前用户匹配的租借。更改租借时,只会显示
ForeignKey与当前用户匹配的租借。ForeignKey字段不会显示在表单上。
当然,这应该能够适用于具有适当 ForeignKey 字段的任何模型,而不仅仅是我们的 vacation.Rental 模型。
到目前为止,这听起来可行吗,还是我应该朝着不同的方向前进?
并发症
现在,这是棘手的部分;我不知道如何处理这个。假设Rental 可以有许多“RentalPhotos”。 RentalPhoto 有一个 ForeignKey 到 Rental。用户应该能够将照片添加到他们自己的租赁中。但是,这些照片没有用户ForeignKey,因此无法直接找出照片的所有者。
这是否可以通过框架中的一些技巧来解决,遵循ForeignKeys 直到找到一个带有ForeignKey 的对象给用户?还是我应该采取简单的方法,将RentalPhoto(以及其他“属于”Rental 的所有内容)自己的ForeignKey 提供给适当的auth.User?第二种方法会带来不必要的冗余,第一种方法可能需要不必要的处理开销......
如果我完全误入歧途,请不要犹豫,为我指明正确的方向。提前感谢您的帮助。
【问题讨论】:
标签: python django django-admin