organization.Organization model:
from django.db import models
class Organization(models.Model):
orgid = models.IntegerField(max_length=6, primary_key=True)
name = models.CharField(max_length=50)
phone = models.CharField(max_length=20,null=True,blank=True,default=None)
email = models.CharField(max_length=50,null=True,blank=True,default=None)
mobile = models.CharField(max_length=20,null=True,blank=True,default=None
)
permanent_address = models.CharField(max_length=200,null=True,blank=True,
default=None)
present_address = models.CharField(max_length=200,null=True,blank=True,
default=None)
remark = models.CharField(max_length=500,null=True,blank=True,default=
None)
And migration:
# Generated by Django 2.2.3 on 2019-11-26 15:36
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Organization',
fields=[
('orgid', models.IntegerField(max_length=6, primary_key=True,
serialize=False)),
('name', models.CharField(max_length=50)),
('phone', models.CharField(blank=True, default=None,
max_length=20, null=True)),
('email', models.CharField(blank=True, default=None,
max_length=50, null=True)),
('mobile', models.CharField(blank=True, default=None,
max_length=20, null=True)),
('permanent_address', models.CharField(blank=True, default=
None, max_length=200, null=True)),
('present_address', models.CharField(blank=True, default=None
, max_length=200, null=True)),
('remark', models.CharField(blank=True, default=None,
max_length=500, null=True)),
],
),
]
On Tuesday, November 26, 2019 at 8:26:13 PM UTC+6, Integr@te System wrote:
>
> hi, inspect your typo and Organization model.
>
> On Tue, Nov 26, 2019, 16:31 Ahmad Saki <[email protected] <javascript:>>
> wrote:
>
>> Dear,
>> Thanks for your response.
>> I use the foreign key field 'orgid' or not but got the same error. If I
>> want to use this then where is my fault for this error!
>>
>>
>> On Tuesday, November 26, 2019 at 12:11:58 PM UTC+6, Integr@te System
>> wrote:
>>>
>>> Hi man,
>>>
>>> Check 'class UserManager(): ......orgid = org_obj '
>>>
>>>
>>>
>>>
>>> On Tue, Nov 26, 2019, 01:40 Ahmad Saki <[email protected]> wrote:
>>>
>>>> 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
>>>>
>>>> <https://groups.google.com/d/msgid/django-users/7f038f19-7430-4d4b-8dc3-efad352d7bc8%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>> 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] <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/2c8f88c6-5021-4113-84ee-ac0d53001e1a%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/django-users/2c8f88c6-5021-4113-84ee-ac0d53001e1a%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
--
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/84f02bae-7119-4066-a3d3-3dfc8b8c5973%40googlegroups.com.