I'm trying to use a ManytoManyField, but whenever I run makemigrations, Django returns this error:
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 "/home/user/app/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/user/app/lib/python3.5/site-packages/django/core/management/__init__.py", line 357, in execute
django.setup()
File "/home/user/app/lib/python3.5/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/user/app/lib/python3.5/site-packages/django/apps/registry.py", line 114, in populate
app_config.import_models()
File "/home/user/app/lib/python3.5/site-packages/django/apps/config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "/home/user/app/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 665, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/home/user/app/bin/app/app_main/models.py", line 7, in <module>
class user(AbstractUser):
File "/home/user/app/bin/app/app_main/models.py", line 8, in user
blocking = models.ManytoManyField('self', symmetrical=False)
AttributeError: module 'django.db.models' has no attribute 'ManytoManyField'
Why is this happening? I have looked at other SO questions with similar issues, but they usually stem from the coder calling it "ManyToManyField" instead of "models.ManyToManyField". Thanks in advance for any help.
You make typo here.
It should be
blocking = models.ManyToManyField('self', symmetrical=False)
Related
I've recently installed django-parler==2.2 and when I rewrite my model to inherit from TranslatableModel and then try to makemigrations I get the following error:
main_menu_slug = models.SlugField(max_length=120, unique=main_menu_item)
NameError: name 'main_menu_item' is not defined
Everything runs fine when I inherit from models.Model. Here is the code:
class MenuItem(TranslatableModel):
translations = TranslatedFields (
main_menu_item = models.CharField(max_length=60),
main_menu_slug = models.SlugField(max_length=120, unique=main_menu_item)
)
I've just started using this module, so possibly it is something trivial but I couldn't find the solution. What I am doing wrong?
Full Traceback:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\project\alfa\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
utility.execute()
File "C:\project\alfa\lib\site-packages\django\core\management\__init__.py", line 377, in execute
django.setup()
File "C:\project\alfa\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\project\alfa\lib\site-packages\django\apps\registry.py", line 114, in populate
app_config.import_models()
File "C:\project\alfa\lib\site-packages\django\apps\config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\project\alfa\project\menus\models.py", line 16, in <module>
class MenuItem(TranslatableModel):
File "C:\project\alfa\project\menus\models.py", line 20, in MenuItem
main_menu_slug = models.SlugField(max_length=120, unique=main_menu_item)
NameError: name 'main_menu_item' is not defined
Working code models.Model:
class MenuItem(models.Model):
main_menu_item = models.CharField(max_length=60)
main_menu_slug = models.SlugField(max_length=120, unique=main_menu_item)
unique should be a boolean value as per the docs: https://docs.djangoproject.com/en/3.1/ref/models/fields/#unique
I am using the following model to represent a Class:
class Class(models.Model):
course = models.ForeignKey(Course, on_delete=models.CASCADE)
day = models.CharField(max_length=10, choices=WEEK_DAYS)
timing = models.TimeField(input_formats = ['%I:%M %p', ])
room = models.CharField(max_length=10)
I want to set my TimeField's format to 12 hours with am and pm. Django's documentation mentions using an input_formats argument to accomplish this here. However, when I run makemigrations, I get the following error:
Traceback (most recent call last):
File ".\manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "D:\Applications\Python\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
utility.execute()
File "D:\Applications\Python\lib\site-packages\django\core\management\__init__.py", line 347, in execute
django.setup()
File "D:\Applications\Python\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\Applications\Python\lib\site-packages\django\apps\registry.py", line 112, in populate
app_config.import_models()
File "D:\Applications\Python\lib\site-packages\django\apps\config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "D:\Applications\Python\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "D:\plannerly\timetable\models.py", line 15, in <module>
class Class(models.Model):
File "D:\plannerly\timetable\models.py", line 18, in Class
timing = models.TimeField(input_formats = ['%I:%M %p', ])
File "D:\Applications\Python\lib\site-packages\django\db\models\fields\__init__.py", line 2146, in __init__
super().__init__(verbose_name, name, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'input_formats'
I'm not really sure whats causing this. Any ideas?
input_formats is for forms.DateField()[1]. It is not a model.DateField()[2] option.
You have to set input_fomats=[] in your form, not in your models.
[1] https://docs.djangoproject.com/en/2.2/ref/forms/fields/#timefield
[2] https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.DateField
I get an ImportError when trying to import from python standard library.
This only happens when I use a custom django management command and not when I use the normal runserver.
This is the error I get:
Traceback (most recent call last):
File "D:/stack/sendall/website/sendall/manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "D:\stack\sendall\website\venv\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "D:\stack\sendall\website\venv\lib\site-packages\django\core\management\__init__.py", line 357, in execute
django.setup()
File "D:\stack\sendall\website\venv\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\stack\sendall\website\venv\lib\site-packages\django\apps\registry.py", line 112, in populate
app_config.import_models()
File "D:\stack\sendall\website\venv\lib\site-packages\django\apps\config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "C:\Users\Joseph\AppData\Local\Programs\Python\Python36-32\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "D:\stack\sendall\website\sendall\accounts\models.py", line 1, in <module>
from typing import AsyncContextManager
ImportError: cannot import name 'AsyncContextManager'
I am using python 3.7
Hope someone can help me solve this issue
I am trying to connect the SQLite3 database to Django. while I try to sync the database with a command
$ python manage.py syncdb
it shows a long trace. I don't know how to fix it. can anyone help me with that
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python35\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python35\lib\site-packages\django\core\management\__init__.py", line 357, in execute
django.setup()
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python35\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python35\lib\site-packages\django\apps\registry.py", line 112, in populate
app_config.import_models()
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python35\lib\site-packages\django\apps\config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 985, in _gcd_import
File "<frozen importlib._bootstrap>", line 968, in _find_and_load
File "<frozen importlib._bootstrap>", line 957, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 697, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "F:\django\DatabaseConnectTest\polls\models.py", line 9, in <module>
class Choice(models.Model):
File "F:\django\DatabaseConnectTest\polls\models.py", line 10, in Choice
quesion = models.ForeignKey(Question)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
The on_delete argument is required on all ForeignKey fields since Django 2.0. There's no longer a default value. You have to go through all your models and add this argument to relations.
The traceback will tell you exactly where to find the code that should be fixed.
File "F:\django\DatabaseConnectTest\polls\models.py", line 10, in Choice
quesion = models.ForeignKey(Question)
In most cases on_delete=models.CASCADE is what you want.
question = models.ForeignKey(Question, on_delete=models.CASCADE)
https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.ForeignKey.on_delete
I'm using some enum fields in my data model. I've installed django-enumfield package. My django version is 1.10.6 and django-enumfield version is 1.2.1.
Anyway I get the following error when db migration is issued.
$ python manage.py makemigrations
Output:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/core/management/__init__.py", line 341, in execute
django.setup()
File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/usr/local/lib/python3.5/dist-packages/Django-1.10.6-py3.5.egg/django/apps/config.py", line 199, in import_models
self.models_module = import_module(models_module_name)
File "/home/indikau/anaconda3/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "/home/indikau/workspace/hotel_manager/manager/models.py", line 4, in <module>
from django_enumfield import enum
File "/usr/local/lib/python3.5/dist-packages/django_enumfield/enum.py", line 6, in <module>
from django_enumfield.db.fields import EnumField
File "/usr/local/lib/python3.5/dist-packages/django_enumfield/db/fields.py", line 8, in <module>
class EnumField(six.with_metaclass(models.SubfieldBase, models.IntegerField)):
AttributeError: module 'django.db.models' has no attribute 'SubfieldBase'
Is there anyway to fix this problem?
Thanks.
SubfieldBase was deprecated since 1.8 and it's removed in 1.10.
There looks like a few solutions available here: https://github.com/5monkeys/django-enumfield/issues/39