'Invalid object name - statements could not be prepared

I have built a custom user model which until introducing database routers was working fine. I have pasted the model below and wondered if anyone had any insight as to why it is generating the following sql error message.

django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'Users2_customuser'. (208) (SQLExecDirectW); [42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")

import datetime
from django.db import models
from django.contrib.auth.models import (
    BaseUserManager, AbstractBaseUser
)
from django.core.mail import send_mail
from django.utils.translation import ugettext_lazy as _

import logging
log = logging.getLogger(__name__)


class CustomUserManager(BaseUserManager):
    def create_user(self, email, password=None, **kwargs):
            if not email:
                raise ValueError(_(f'Please enter an email address'))
            email = self.normalize_email(email)
            user = self.model(email=email, **kwargs)
            user.set_password(password)
            user.save()
            log.info(f'User created with email: {email}')
            return user

    def create_superuser(self, email, password=None, **kwargs):
        kwargs.setdefault('is_staff', True)
        kwargs.setdefault('is_superuser', True)
        if kwargs.get('is_staff') is not True:
            raise ValueError(f'Superuser must have staff permission')
        if kwargs.get('is_superuser') is not True:
            raise ValueError(f'Superuser must have superuser permission')
        log.info(f'Superuser created with email: {email}')
        return self.create_user(email, password, **kwargs)
    
class CustomUser(AbstractBaseUser):
    email = models.EmailField(
        verbose_name='email address',
        max_length=255,
        unique=True,
    )
    username = models.CharField(max_length=150, unique=True)
    first_name = models.CharField(max_length=150, blank=True)
    surname = models.CharField(max_length=150, blank=True)
    address1 = models.CharField(max_length=254, blank=True)
    address2 = models.CharField(max_length=254, blank=True)
    area_code = models.CharField(max_length=20, blank=True)
    country_code = models.CharField(max_length=10, blank=True)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=True) # a admin user; non super-user
    is_student = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=True) # a superuser
    is_superuser = models.BooleanField(default=False)
    timestamp = models.DateTimeField(auto_now_add = True)
    confirmed = models.BooleanField(default=False)
    confirmed_date = models.DateTimeField(auto_now = True)

    objects = CustomUserManager()


    # notice the absence of a "Password field", that is built in.

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'address1', 'address2', 'area_code', 'country_code'] # Email & Password are required by default.

    class Meta:
        verbose_name = _('user')
        verbose_name_plural = _('users')    

    def get_absolute_url(self):
        return 'users/%s' % urlquote(self.email)

    def get_full_name(self):
        # The user is identified by their email address
        full_name = '%s %s' %(self.first_name, self.surname)
        return full_name.strip()

    def get_short_name(self):
        # The user is identified by their email address
        return self.first_name

    def email_user(self, subject, message, from_email=None):
        """
        Sends an email to this User.
        """
        send_mail(subject, message, from_email, [self.email])

    def __str__(self):
        return self.email

    def has_perm(self, perm, obj=None):
        "Does the user have a specific permission?"
        # Simplest possible answer: Yes, always
        return True

    def has_module_perms(self, app_label):
        "Does the user have permissions to view the app `app_label`?"
        # Simplest possible answer: Yes, always
        return True

    @property
    def is_staff_property(self):
        "Is the user a member of staff?"
        return self.is_staff

    @property
    def is_admin_property(self):
        "Is the user a admin member?"
        return self.is_admin

    @property
    def is_student_property(self):
        "is the user a student?"
        return self.is_student
    
    @property
    def is_superuser_property(self):
        return self.is_superuser


class Profile(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    name = models.CharField(max_length = 200, null = True)
    title = models.CharField(max_length=20, null=True)
    description = models.CharField(max_length=200, null=True)
    profile_img = models.ImageField(upload_to = 'images', null=True, blank = True)

    def __str__(self):
        return self.name

class Overview(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    Mobile = models.IntegerField()
    Relationship_Status = models.IntegerField()
    From = models.CharField(max_length=200)
    Lives_In = models.CharField(max_length=200)
    Studied_at = models.CharField(max_length=200)
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class Locations(models.Model):
    user = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    Town_City = models.CharField(max_length=200)
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class RelationshipStatus(models.Model):
    user = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    Relationship_Status = models.CharField(max_length=200)
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class Institutions(models.Model):
    user = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    Instiution_Name = models.CharField(max_length=200)
    Address1 = models.CharField(max_length=200)
    Addess2 = models.CharField(max_length=200)
    Town_City = models.CharField(max_length=200)
    Postcode = models.CharField(max_length=200)
    Country = models.CharField(max_length=200)
    Date_From = models.DateTimeField()
    Date_To = models.DateTimeField()
    Current_Past = models.BooleanField()
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class Workplace(models.Model):
    user = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    Workplace_Name = models.CharField(max_length=200)
    Address1 = models.CharField(max_length=200)
    Address2 = models.CharField(max_length=200)
    Town_City = models.CharField(max_length=200)
    Postcode = models.CharField(max_length=200)
    Country = models.CharField(max_length=200)
    Date_From = models.DateTimeField()
    Date_To = models.DateTimeField()
    Current_Past = models.BooleanField()
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class Highschool(models.Model):
    user = models.OneToOneField(CustomUser, on_delete = models.CASCADE)
    HighSchool_Name = models.CharField(max_length=200)
    Address1 = models.CharField(max_length=200)
    Address2 = models.CharField(max_length=200)
    Town_City = models.CharField(max_length=200)
    Postcode = models.CharField(max_length=200)
    Country = models.CharField(max_length=200)
    Date_From = models.DateTimeField()
    Date_To = models.DateTimeField()
    Current_Past = models.BooleanField()
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class Contact_Info(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    TelephoneNo = models.IntegerField()
    MobileNo = models.IntegerField()
    Address1 = models.CharField(max_length=200)
    Address2 = models.CharField(max_length=200)
    Town_City = models.CharField(max_length=200)
    Postcode = models.CharField(max_length=200)
    Country = models.CharField(max_length=200)
    Website = models.CharField(max_length=200)
    Twitter = models.CharField(max_length=200)
    Gender = models.CharField(max_length=200)
    DOB = models.DateTimeField()
    Date_Created = models.DateTimeField(auto_now_add=True)
    Date_Updated = models.DateTimeField(auto_now=True)

class Details(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    about_you = models.TextField()
    name_pronounciation = models.CharField(max_length=200)
    other_names = models.CharField(max_length=200)
    favourite_quotes = models.TextField()


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source