Почему я получаю "ValueError: Следующие поля не существуют в этой модели или являются m2m-полями: last_login" эта ошибка
Я пишу модульный тест для веб-сайта, у веб-сайта много прав доступа. Вот код моего модульного теста
from django.test import TestCase
from accounts.models import Address, User, Business, Employment
class Test_Cases(TestCase):
def setUp(self):
self.user = User.objects.create_superuser( birth_year=1996, birth_month= 8, birth_day = 15, marital_status= "married", \
confirmation_token = "55zr2xYflgSiz18dhBAk1Qqswb70ckmZ", email= "testuser1234@example.com", \
username = "testusera11123", password= "abc123")
self.address = Address.objects.create(city="oslo", state="Norway", street_1="112 Main", street_2="113 Main", zip="54000")
self.business = Business.objects.create(address=self.address, name="NoorLimited", contact_email="work@bitspro.com", \
contact_first_name= "Business", contact_last_name= "Admin")
self.employer= Employment.objects.create(role="ADMIN", user=self.user, business=self.business, active=True)
def test_get_business(self):
self.client.force_login(self.employer)
API_LOGIN_URL = '/business/1/roster/'
response= self.client.get(API_LOGIN_URL)
self.assertEquals(response.status_code, 200)
код "Get_business" имеет разрешение "Business_admin" Вот код
def needs_business_admin(wrapped):
@wraps(wrapped)
def decorator(*args, **kwargs):
business = kwargs.get("business")
request = [a for a in args if hasattr(a, 'user')][0]
try:
Employment.objects.get(
role=ADMIN, user=request.user, business=business, active=True)
except Employment.DoesNotExist:
return BaseView(request).forbidden()
return wrapped(*args, **kwargs)
return decorator
вот url, который я тестирую
url(r'^business/(?P<business>[^/]+)/roster/?$', BusinessRosterController()),
и вот модель пользователя
class User(AbstractUser, BaseModelMixin):
middle_initial = models.CharField(max_length=1, blank=True, default="")
gender = models.CharField(max_length=255, default="", blank=True)
birth_year = models.IntegerField(default=1900)
birth_month = models.IntegerField(default=1)
birth_day = models.IntegerField(default=1)
marital_status = models.CharField(max_length=255, blank=True, default="")
sexual_orientation = models.CharField(
max_length=255, blank=True, default="")
reset_password_token = models.CharField(
max_length=32, blank=True, default="")
password_reset_at = models.DateTimeField(null=True, blank=True)
reset_password_sent_at = models.DateTimeField(null=True, blank=True)
sign_in_count = models.IntegerField(default=0, blank=True)
current_sign_in_ip = models.CharField(
max_length=255, blank=True, default="")
last_sign_in_ip = models.CharField(max_length=255, blank=True, default="")
confirmation_token = models.CharField(
max_length=32, blank=True, default="")
confirmed_at = models.DateTimeField(null=True, blank=True)
confirmation_sent_at = models.DateTimeField(null=True, blank=True)
employers = models.ManyToManyField(Business, through="Employment")
timezone = models.CharField(default="UTC", max_length=32, choices=[
(x, x) for x in pytz.common_timezones])
address = models.ForeignKey(
Address, null=True, blank=True, on_delete=models.CASCADE)
email = models.EmailField("Email Address", blank=True, unique=True)
image = models.ForeignKey("main.Image", null=True,
blank=True, on_delete=models.CASCADE)
facebook_id = models.CharField(max_length=512, default="", blank=True)
interests = JSONField(blank=True, default=dict)
login_failures = models.IntegerField(default=0)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
и я получаю эту ошибку
PS C:\Users\Lenovo\web> docker-compose run --rm api sh -c "python manage.py test accounts"
Creating encastweb_api_run ... done
Creating test database for alias 'default'...
System check identified some issues:
======================================================================
ERROR: test_get_business (accounts.tests.Test_Cases)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/src/app/web/accounts/tests.py", line 24, in test_get_business
self.client.force_login(self.employer)
File "/usr/local/lib/python3.8/site-packages/django/test/client.py", line 619, in force_login
self._login(user, backend)
File "/usr/local/lib/python3.8/site-packages/django/test/client.py", line 632, in _login
login(request, user, backend)
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/__init__.py", line 132, in login
user_logged_in.send(sender=user.__class__, request=request, user=user)
File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 173, in send
return [
File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 174, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/models.py", line 20, in update_last_login
user.save(update_fields=['last_login'])
File "/usr/local/lib/python3.8/site-packages/services/models.py", line 74, in save
super(BaseModel, self).save(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 728, in save
raise ValueError("The following fields do not exist in this "
ValueError: The following fields do not exist in this model or are m2m fields: last_login
----------------------------------------------------------------------
Ran 2 tests in 8.429s
FAILED (errors=1)
Destroying test database for alias 'default'...
ERROR: 1
Буду очень признателен за ваши предложения. Заранее большое спасибо