2017-02-09 4 views
1

У меня есть сервер Django (Использование PostGIS), и я хочу, чтобы отключить все связанные с аутентификацией:Как отключить проверку подлинности в целом для Django администратора

  • При входе в админ аутентификация не будет требоваться
  • В админ скрыть Пользователи/группы

После поиска в Интернете я пробовал комбинацию this & this

Это дает мне результат, на который я надеялся, пока не попытаюсь добавить объект через администратора. Тогда я получаю IntegrityError:

insert or update on table "django_admin_log" violates foreign key constraint "django_admin_log_user_id_c564eba6_fk_auth_user_id" 
DETAIL: Key (user_id)=(1) is not present in table "auth_user". 

Я попытался решить это с помощью решений, как this и это не помогло.

Я не против иметь решение в совершенно новом подходе до тех пор, пока не будет достигнута конечная цель.

Благодаря вперед,

+3

Необходимо создать пользователя с id = 1. –

ответ

2

Поскольку проект Django работает в докерах, и может быть развернут, когда уже существуют пользователи или я не в конечном итоге делаю:

# Create superuser for admin use in case it doesn't exist 
try: 
    User.objects.get_by_natural_key('admin') 
except User.DoesNotExist: 
    User.objects.create_superuser('admin', '[email protected]', '123456') 

Надеется, что это помогает кто-то один день. Полное использование:

from django.contrib import admin 
from django.contrib.auth.models import User, Group 


# We add this so no authentication is needed when entering the admin site 
class AccessUser(object): 
    has_module_perms = has_perm = __getattr__ = lambda s,*a,**kw: True 

admin.site.has_permission = lambda r: setattr(r, 'user', AccessUser()) or True 

# We add this to remove the user/group admin in the admin site as there is no user authentication 
admin.site.unregister(User) 
admin.site.unregister(Group) 

# Create superuser for admin use in case it doesn't exist 
try: 
    User.objects.get_by_natural_key('admin') 
except User.DoesNotExist: 
    User.objects.create_superuser('admin', '[email protected]', '123456')