【问题标题】:Django : how to give user/group permission to view model instances for a specified period of timeDjango:如何授予用户/组在指定时间段内查看模型实例的权限
【发布时间】:2018-09-13 05:50:20
【问题描述】:
我对 Django 还很陌生,无法通过阅读文档或查看现有问题来弄清楚。我查看了 Django 权限和身份验证,但找不到解决方案。
假设我有一个详细视图,其中列出了名为 Item 的模型的所有实例。对于每个Item,我想控制哪些用户 可以查看它,以及多长时间。换句话说,对于每个有权访问 Item 的 User,我希望在指定的时间后 expire时间。在那段时间之后,Item 将从列表中消失,并且 User 无法访问详细说明 Item 的 url。
我知道,实现的逻辑非常简单,但是“每个用户/每个对象”部分让我感到困惑。非常感谢您的帮助!
【问题讨论】:
标签:
python
django
django-admin
django-authentication
django-permissions
【解决方案1】:
有关 UserItemExpiryDate 的信息必须存储在单独的表(模型)中。我建议在 Django 中使用您的编码。
有几个场景需要考虑:
1)创建了一个新用户,他/她应该可以访问项目。
在这种情况下,您使用新的 UserItem 组合(作为键)和到期日期向 UserItemExpiry 添加条目。然后,对于已登录的用户,您从 Items 中查找将来在 UserItemExpiry 中具有 UserItem 的项目。
2)创建了一个新项目,并且必须将其添加到现有用户。
在这种情况下,您向 UserItemExpiry 添加条目,其中包含 ALL users new Item 组合(作为键)和到期日期。并且“选择”有效项目的逻辑与第 1 点相同。
祝你好运,
拉德克·斯瓦克