0
我有關於權限的問題。我希望將通過國家標記爲員工(並且可以進入管理頁面)的用戶分開。例如,來自荷蘭的管理員只能查看和編輯來自荷蘭的用戶。什麼是最好的方法來做到這一點?
我應該以某種方式製作查詢,以便用戶只能看到來自其國家的用戶,並且我可以用權限對其進行自定義嗎?
Django權限按國家/地區分開用戶
我的models.py定義一個國家
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile', unique=True)
country = models.CharField("Country", max_length=150, blank=False)
,我在admin.py
def queryset(self, request):
qs = super(ProfileAdmin, self).queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(country=request.user.country)
我試過你的代碼,並在運行中遇到了一些問題,以及我已經用OneToOne關係附帶UserProfile,我想精確地過濾屬於UserProfile的字段,而不是標準的User模型,並且代碼在這裏似乎不適用於我。由於用戶模型已擴展,我仍然可以調用像'country = request.user.profile.country'這樣的字段,至少我認爲是這樣。可能是我的管理員仍然看到admintool中的所有用戶的問題? – Vollmilchbb
如果您以超級用戶身份登錄,您將看到所有'UserProfile'。 – catavaran
你想過濾'UserProfile'管理員或標準'User'模型管理員嗎? – catavaran