У меня есть вопрос относительно разрешений. Я хотел бы отделить моих пользователей, отмеченных как Персонал (и может войти на страницу администрирования) через страны. Так, например, администратор из Нидерландов может видеть и редактировать пользователей из Нидерландов. Каков наилучший способ сделать это?
Должен ли я делать запросы таким образом, чтобы пользователи могли видеть только пользователей из своей страны, и я могу настроить его с разрешениями?
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)
0: корабль с UserProfile, и я хочу точно фильтровать поле, принадлежащее UserProfile, а не стандартную модель пользователя, и код, похоже, не работает для меня здесь. Так как модель пользователя расширена, я все равно могу назвать поля типа «country = request.user.profile.country», по крайней мере, я так и думал. Что может быть проблемой, что мой администратор все еще видит всех пользователей в admintool? – Vollmilchbb
Вы увидите все 'UserProfile', если вы зарегистрированы как суперпользователь. – catavaran
Вы хотите отфильтровать администратор 'UserProfile' или стандартный администратор модели User? – catavaran