Создание нового пользователя в тестовом примере - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать нового пользователя в тестовом кейсе django rest framework, чтобы можно было создать действие post со следующим кодом:

from django.contrib.auth.models import User

user = User.objects.create_user('username', 'Pas$w0rd')
user = authenticate(username='username', password='Pas$w0rd')
client = APIClient()
client.force_authenticate(user=user)
r = client.post('/api/v1/event/', {'name': 'testevent'}, format='json')

Получение следующей ошибки:

  user = User.objects.create_user('username', 'Pas$w0rd')
  File "/opt/dev/wgptx/venv/lib/python2.7/site-packages/django/db/models/manager.py", line 277, in __get__
    self.model._meta.swapped,
AttributeError: Manager isn't available; 'auth.User' has been swapped for 'account.User'

Любая помощь, пожалуйста?

1 Ответ

0 голосов
/ 28 августа 2018

Ошибка, похоже, что вы используете расширенную модель пользователя.

Таким образом, вы должны использовать
from account.models import User

Следовательно, ваш тестовый модуль будет похож,

<b>
from account.models import User</b>

user = User.objects.create_user('username', 'Pas$w0rd')
user = authenticate(username='username', password='Pas$w0rd')
client = APIClient()
client.force_authenticate(user=user)
r = client.post('/api/v1/event/', {'name': 'testevent'}, format='json')


OR

Используйте функцию get_user_model как,

<b>from django.contrib.auth import get_user_model

User = get_user_model()</b>

user = User.objects.create_user('username', 'Pas$w0rd')
user = authenticate(username='username', password='Pas$w0rd')
client = APIClient()
client.force_authenticate(user=user)
r = client.post('/api/v1/event/', {'name': 'testevent'}, format='json')
...