Reputation: 19
i'm new in django i want to create a business_plan application i the step to create my models i have a creating many class in my models.py:
from django.db import models
from django.contrib.auth.models import *
class CustomUser(AbstractUser):
user_type=((1,"admin"),(2,"staff"))
user_type=models.CharField(default=1,choices=user_type,max_length=10)
class Entrepreneur(models.Model):
id_models= models.IntegerField(primary_key=True)
admin=models.OneToOneField(CustomUser,on_delete=models.CASCADE())
nom_et_prenom=models.CharField(max_length=50)
date_naissance=models.DateField()
adresse_entr=models.CharField(max_length=20)
telephone=models.IntegerField()
statut_social=(('ce','celébataire'),
('ma','marié'),
('di','divorcé'),
('ve','veuf'),
)
occupation=models.CharField(max_length=50)
niveau_scolaire=(
('pri','primaire'),
('sec','secondaire'),
('cap','certificat aptitude professionel'),
('btp','brevet technicien professionel'),
('bts','brevet technicien superieur'),
('lic','license'),
('mai','maitrise'),
('mas','mastere'),
('doc','doctorat'),
)
niveau_scolaire=models.CharField(default='ser',choices=niveau_scolaire,max_length=50)
annnee_exp=models.IntegerField()
email=models.CharField(max_length=255)
password=models.CharField(max_length=255)
class Projet(models.Model):
id_models=models.IntegerField(primary_key=True)
admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE())
nom_projet=models.CharField(max_length=30)
lieu_implantation=models.CharField(max_length=20)
type_projet=(
('ser','service'),
('com','commerce'),
('agr','agricuture'),
('ind','industrie'),
('IT','technologie information'),
('art','artisanat'),
('tor','tourisme'),
)
type_projet=models.CharField(default='ser',choices=type_projet,max_length=50)
produit=models.CharField(max_length=50)
id_promoteur=models.ForeignKey(Entrepreneur,on_delete=models.CASCADE)
class Admin(models.Model):
id_admin=models.AutoField(primary_key=True)
name=models.CharField(max_length=255)
email=models.CharField(max_length=255)
password=models.CharField(max_length=255)
objects=models.Manager()
class CustomUser(AbstractUser):
user_type=((1,"admin"),(2,"staff"))
user_type=models.CharField(default=1,choices=user_type,max_length=10)
this is my files manage.py:
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oasisconsuting.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
when i run makemigration after creating my classes i have this error:
> (business) C:\Users\hp\PycharmProjects\business\oasisconsuting>python manage.py makemigrations
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\hp\PycharmProjects\business\lib\site-packages\django\core\management\__init__.py",
line 401, in execute_from_command_line
utility.execute()
File "C:\Users\hp\PycharmProjects\business\lib\site-packages\django\core\management\__init__.py",
line 377, in execute
django.setup()
File "C:\Users\hp\PycharmProjects\business\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\hp\PycharmProjects\business\lib\site-packages\django\apps\registry.py", line 114, in
populate
app_config.import_models()
File "C:\Users\hp\PycharmProjects\business\lib\site-packages\django\apps\config.py", line 211, in
import_models
self.models_module = import_module(models_module_name)
File "C:\Users\hp\PycharmProjects\business\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\hp\PycharmProjects\business\oasisconsuting\businessplan\models.py", line 9, in
<module>
class Entrepreneur(models.Model):
File "C:\Users\hp\PycharmProjects\business\oasisconsuting\businessplan\models.py", line 11, in
Entrepreneur
admin=models.OneToOneField(CustomUser,on_delete=models.CASCADE())
TypeError: CASCADE() missing 4 required positional arguments: 'collector', 'field', 'sub_objs', and
'using'
where is my errors can you help to fix this errors I use sqite3 database
Upvotes: 0
Views: 83
Reputation: 606
The reason is because you're calling models.CASCADE
with the brackets after it. The last line on your traceback shows that 4 arguments is required because you're making a call to that function rather than just referencing it.
The line you require is:
...
class Entrepreneur(models.Model):
id_models= models.IntegerField(primary_key=True)
admin=models.OneToOneField(CustomUser,on_delete=models.CASCADE)
...
Upvotes: 1
Reputation: 19
thank you i fix the errors it was about the barckets in models.CASCADE
but when i re_run the code it show an other errors:(i dont know if it's an error or warnings
> C:\Users\hp\PycharmProjects\business\lib\site-packages\django\db\models\base.py:320:
RuntimeWarning: Model 'businessplan.customuser' was already registered. Reloadin
g models is not advised as it can lead to inconsistencies, most notably with related
models.
new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
SystemCheckError: System check identified some issues:
ERRORS:
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with
reverse accessor for 'CustomUser.groups'.
HINT: Add or change a related_name argument to the definition for 'User.groups' or
'CustomUser.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions'
clashes with reverse accessor for 'CustomUser.user_permissions'.
HINT: Add or change a related_name argument to the definition for
'User.user_permissions' or 'CustomUser.user_permissions'.
businessplan.CustomUser.groups: (fields.E304) Reverse accessor for 'CustomUser.groups'
clashes with reverse accessor for 'User.groups'.
HINT: Add or change a related_name argument to the definition for
'CustomUser.groups' or 'User.groups'.
businessplan.CustomUser.user_permissions: (fields.E304) Reverse accessor for
'CustomUser.user_permissions' clashes with reverse accessor for
'User.user_permissions'.
HINT: Add or change a related_name argument to the definition for
'CustomUser.user_permissions' or 'User.user_permissions'.
businessplan.CustomUser_groups: (fields.E336) The model is used as an intermediate
model by 'businessplan.CustomUser.groups', but it does not have a foreign key to '
CustomUser' or 'Group'.
businessplan.CustomUser_user_permissions: (fields.E336) The model is used as an
intermediate model by 'businessplan.CustomUser.user_permissions', but it does not hav
e a foreign key to 'CustomUser' or 'Permission'.
businessplan.Entrepreneur.admin: (fields.E300) Field defines a relation with model
'CustomUser', which is either not installed, or is abstract.
businessplan.Projet.admin: (fields.E300) Field defines a relation with model
'CustomUser',
which is either not installed, or is abstract.
Upvotes: 0
Reputation: 522
Just remove brackets in CASCADE as it not method but constant
class Entrepreneur(models.Model):
admin=models.OneToOneField(CustomUser,on_delete=models.CASCADE)
class Projet(models.Model):
id_promoteur=models.ForeignKey(Entrepreneur,on_delete=models.CASCADE)
Upvotes: 1