[英]Django Extended Group's Permissions not applied to users
所以我擴展了 Django 的Group
模型來添加一個額外的字段,如下所示:
class MyModel(Group):
extra_field = models.TextField(null=True, blank=True)
這樣做時,創建的每個MyModel
實例MyModel
創建了一個Group
實例。 如果我使用user.groups.add(group)
將用戶添加到生成的組中,則會按預期添加該組。
但是,來自 MyModel 組的權限似乎並沒有傳遞給用戶,即
執行user.get_all_permissions()
、 get_group_permissions()
甚至測試user.has_permission(mygroup_permission)
什么都不返回。 僅顯示來自純Group 實例(在擴展模型之前創建)的權限。
我需要做什么才能使自定義組的權限對用戶可見?
TIA
當您查看ModelBackend
(默認的 django 身份驗證后端)時,您可以看到:
def _get_group_permissions(self, user_obj):
user_groups_field = get_user_model()._meta.get_field('groups')
user_groups_query = 'group__%s' % user_groups_field.related_query_name()
return Permission.objects.filter(**{user_groups_query: user_obj})
很明顯,它試圖從代表用戶組的字段中確定權限,這里是groups 。 由於您的MyModel
未綁定到 djangos 用戶模型,因此您不會以這種方式獲得任何權限。
您現在可以:
在我看來,最簡單的方法是在一對一關系中使用新模型擴展 Group 模型。 通過這種方式,您可以進一步使用 djangos 身份驗證系統並獲得額外的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.