Django Model Admin
Как я могу отобразить в Model Admin только пользователя, вошедшего в систему, а не всех пользователей?
Models.py user = models.ForeignKey(User,db_column="user",null = True, on_delete = models.SET_NULL)
Admin.py
def get_queryset(self, request): qs = super(Museum_ItemAdmin, self).get_queryset(request) if request.user.is_superuser: return qs return qs.filter(user=request.user)
Проблема в том, что при входе в систему под именем "Peter" я могу видеть и управлять всеми пользователями. Вопрос в том, как я могу видеть только Peter и не иметь возможности видеть или изменять других пользователей?
Заранее большое спасибо
Надеюсь, это поможет:-
Вам нужно отфильтровать, в соответствии с вашим ключом
admin.py
class UserAdmin(admin.ModelAdmin):
# list_display = ('username', 'is_active')
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs.filter(is_active = True)
return qs.filter(author=request.user)
admin.site.register(User, UserAdmin)
Для получения более подробной информации: https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset
Это ответ и работает для меня, спасибо за помощь
exclude = ('user',)
def save_form(self, request, form, change):
obj = super().save_form(request, form, change)
if not change:
obj.user = request.user
return obj
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user=request.user)