My custom authentication model in django:

from django.db import models
from django.contrib.auth.models import (
AbstractBaseUser, BaseUserManager
)
from organization.models import Organization


class UserManager(BaseUserManager):
# use_in_migrations = True

# python manage.py createsuperuser
def create_user(self, orgid, username, email,  password=None, is_admin=False, 
is_staff=False, is_active=True):
    if not orgid:
        raise ValueError("Organization of user must not empty")
    elif not username:
        raise ValueError("User must have an username")
    elif not email:
        raise ValueError("User must have an email address")

    org_obj = Organization.objects.all(orgid=orgid)
    user_obj = self.model(
        orgid=org_obj,
        username=username,
        email = self.normalize_email(email),
        password=password
        )
    user_obj.set_password(password)
    user_obj.admin=is_admin
    user_obj.staff=is_staff
    user_obj.active=is_active
    user_obj.save(using=self._db)
    return user_obj

# python manage.py createsuperuser
def create_superuser(self, orgid, username, email, password=None):
    user = 
self.create_user(orgid,username,email,password=password,is_admin=True,is_staff=True,is_active=True)
    return user

def create_staffuser(self, orgid, username, email, password=None):
    user = 
self.create_user(orgid,username,email,password=password,is_admin=False,is_staff=True,is_active=True)
    return user

class User(AbstractBaseUser):
orgid       = models.ForeignKey(Organization, max_length=6, 
on_delete=models.CASCADE)
username    = models.CharField(primary_key=True, max_length=50) 
email       = models.EmailField(max_length=255, unique=True, null=False, 
blank=False)
admin       = models.BooleanField(default=False)
staff       = models.BooleanField(default=False)
active      = models.BooleanField(default=True)
date_joined = models.DateTimeField(auto_now_add=True)

objects = UserManager()

USERNAME_FIELD = "username"
# REQUIRED_FIELDS must contain all required fields on your User model, 
# but should not contain the USERNAME_FIELD or password as these fields will 
always be prompted for.
REQUIRED_FIELDS = ['orgid','email']

class Meta:
    app_label = "user"
    db_table = "user"

def __str__(self):
    return self.username

def get_full_name(self):
    return self.username

def get_short_name(self):
    return self.username

# this methods are require to login super user from admin panel
def has_perm(self, perm, obj=None):
    return self.is_staff

# this methods are require to login super user from admin panel
def has_module_perms(self, app_label):
    return self.is_staff

@property
def is_admin(self):
    return self.admin

@property
def is_staff(self):
    return self.staff

@property
def is_active(self):
    return self.active



When I create migrations it creates:

from django.db import migrations, models
import django.db.models.deletion
import user.models


class Migration(migrations.Migration):

initial = True

dependencies = [
    ('organization', '0001_initial'),
]

operations = [
    migrations.CreateModel(
        name='User',
        fields=[
            ('password', models.CharField(max_length=128, 
verbose_name='password')),
            ('last_login', models.DateTimeField(blank=True, null=True, 
verbose_name='last login')),
            ('username', models.CharField(max_length=50, primary_key=True, 
serialize=False)),
            ('email', models.EmailField(max_length=255, unique=True)),
            ('admin', models.BooleanField(default=False)),
            ('staff', models.BooleanField(default=False)),
            ('active', models.BooleanField(default=True)),
            ('date_joined', models.DateTimeField(auto_now_add=True)),
            ('orgid', models.ForeignKey(max_length=6, 
on_delete=django.db.models.deletion.CASCADE, to='organization.Organization')),
        ],
        options={
            'db_table': 'user',
        },
        managers=[
            ('objects', user.models.UserManager()),
        ],
    ),
]



But when I want to migrate it gives me an error below. Please help me 
anyone..

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, organization, sessions, user
Running migrations:
  Applying admin.0004_auto_20191118_2315...Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\__init__.py",
 line 381, in execute_from_command_line
    utility.execute()
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\__init__.py",
 line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py",
 line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py",
 line 364, in execute
    output = self.handle(*args, **options)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\base.py",
 line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\management\commands\migrate.py",
 line 234, in handle
    fake_initial=fake_initial,
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\executor.py",
 line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, 
fake_initial=fake_initial)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\executor.py",
 line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, 
fake_initial=fake_initial)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\executor.py",
 line 245, in apply_migration
    state = migration.apply(state, schema_editor)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\migration.py",
 line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, 
project_state)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\migrations\operations\fields.py",
 line 249, in database_forwards
    schema_editor.alter_field(from_model, from_field, to_field)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\base\schema.py",
 line 507, in alter_field
    new_db_params = new_field.db_parameters(connection=self.connection)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\related.py",
 line 966, in db_parameters
    return {"type": self.db_type(connection), "check": 
self.db_check(connection)}
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\related.py",
 line 963, in db_type
    return self.target_field.rel_db_type(connection=connection)
  File 
"C:\Users\ZAB-SAKI\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\related.py",
 line 878, in target_field
    return self.foreign_related_fields[0]
IndexError: tuple index out of range



-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/7f038f19-7430-4d4b-8dc3-efad352d7bc8%40googlegroups.com.

Reply via email to