'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 |
|---|
