ImportError: cannot import name 'djongo_access_url' from 'djongo' - python

I am getting the following error using Djongo with Mongodb in a django server:
Watching for file changes with StatReloader
Performing system checks...
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1009, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 946, in run
self._target(*self._args, **self._kwargs)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/core/management/commands/runserver.py", line 118, in inner_run
self.check(display_num_errors=True)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/core/management/base.py", line 392, in check
all_issues = checks.run_checks(
File "/home/cchilders/.local/lib/python3.10/site-packages/django/core/checks/registry.py", line 70, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/core/checks/urls.py", line 13, in check_url_config
return check_resolver(resolver)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/core/checks/urls.py", line 23, in check_resolver
return check_method()
File "/home/cchilders/.local/lib/python3.10/site-packages/django/urls/resolvers.py", line 408, in check
for pattern in self.url_patterns:
File "/home/cchilders/.local/lib/python3.10/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/urls/resolvers.py", line 589, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/utils/functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/home/cchilders/.local/lib/python3.10/site-packages/django/urls/resolvers.py", line 582, in urlconf_module
return import_module(self.urlconf_name)
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/cchilders/projects/stocks_backend/dividends_project/urls.py", line 23, in <module>
path('users/', include('users.urls', namespace='users')),
File "/home/cchilders/.local/lib/python3.10/site-packages/django/urls/conf.py", line 34, in include
urlconf_module = import_module(urlconf_module)
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/cchilders/projects/stocks_backend/users/urls.py", line 3, in <module>
from . import views
File "/home/cchilders/projects/stocks_backend/users/views.py", line 10, in <module>
from djongo import transaction
File "/home/cchilders/.local/lib/python3.10/site-packages/djongo/transaction.py", line 2, in <module>
from djongo import djongo_access_url
ImportError: cannot import name 'djongo_access_url' from 'djongo' (/home/cchilders/.local/lib/python3.10/site-packages/djongo/__init__.py)
My users/views.py:
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json
from helpers.view_functions import parse_request_body
from .models import UserProfile
from djongo import transaction
#csrf_exempt
def get_user_profile(request, user_id):
# pass
if request.method == 'GET':
with transaction.atomic():
profile, created = UserProfile.objects.get_or_create(user_id=user_id)
if created:
profile.user_id = user_id
profile.searches = [
{'search_term': 'hd'},
{'search_term': 'wba'},
]
profile.display_settings = [
{'setting_name': 'showYieldChange', 'visible': True},
{'setting_name': 'showAllDividends', 'visible': True},
]
profile.save()
print("user saved in db")
user = UserProfile.objects.get(user_id=user_id)
data = {
'user_id': user.user_id,
'searches': user.searches,
'display_settings': user.display_settings
}
json_data = json.dumps(data)
return HttpResponse({json_data}, content_type='application/json')
if request.method == 'POST':
body = parse_request_body(request)
searches = body['searches']
searches_objects = [{'search_term': x} for x in searches]
print("New searches for user {user_id}".format(user_id=user_id))
print(searches_objects)
user = UserProfile.objects.get(user_id=user_id)
user.searches = searches_objects
user.display_settings = body['display_settings']
user.save()
return HttpResponse("it worked")
users/urls.py:
from django.urls import path
from . import views
app_name = 'dividends'
urlpatterns = [
path('<str:user_id>', views.get_user_profile, name='get_user_profile'),
]
requirements.txt:
bs4
django==3.1.12
django-cors-headers
djongo
gunicorn
html5lib
pymongo==3.12.3
python-decouple
yfinance
users/models.py:
from djongo import models
class RecentSearch(models.Model):
search_term = models.CharField(max_length=100)
class Meta:
abstract = True
class DisplaySetting(models.Model):
setting_name = models.CharField(max_length=150)
visible = models.BooleanField()
class Meta:
abstract = True
class UserProfile(models.Model):
user_id = models.CharField(max_length=255, unique=True)
searches = models.ArrayField(model_container=RecentSearch, null=True)
display_settings = models.ArrayField(model_container=DisplaySetting, null=True)
objects = models.DjongoManager()
in ipython:
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import djongo
In [2]: from djongo import transaction
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Input In [2], in <cell line: 1>()
----> 1 from djongo import transaction
File ~/.local/lib/python3.10/site-packages/djongo/transaction.py:2, in <module>
1 from djongo.exceptions import NotSupportedError
----> 2 from djongo import djongo_access_url
4 print(f'This version of djongo does not support transactions. Visit {djongo_access_url}')
5 raise NotSupportedError('transactions')
ImportError: cannot import name 'djongo_access_url' from 'djongo' (/home/cchilders/.local/lib/python3.10/site-packages/djongo/__init__.py)
In [3]:

correctly using get_or_create and only saving new data if created=True solves the bug of duplicate models when there should only be one unique one
#csrf_exempt
def get_user_profile(request, user_id):
pass
if request.method == 'GET':
# with transaction.atomic():
profile, created = UserProfile.objects.get_or_create(user_id=user_id)
if created:
profile.user_id = user_id
profile.searches = [
{'search_term': 'hd'},
{'search_term': 'wba'},
]
profile.display_settings = [
{'setting_name': 'showYieldChange', 'visible': True},
{'setting_name': 'showAllDividends', 'visible': True},
]
profile.save()
print("user saved in db")
# user = UserProfile.objects.get(user_id=user_id)
data = {
'user_id': profile.user_id,
'searches': profile.searches,
'display_settings': profile.display_settings
}
json_data = json.dumps(data)
return HttpResponse({json_data}, content_type='application/json')
you must set your unique attribute like user_id or stock ticker to unique=True
#csrf_exempt
def get_user_profile(request, user_id):
pass
if request.method == 'GET':
# with transaction.atomic():
profile, created = UserProfile.objects.get_or_create(user_id=user_id)
if created:
profile.user_id = user_id
profile.searches = [
{'search_term': 'hd'},
{'search_term': 'wba'},
]
profile.display_settings = [
{'setting_name': 'showYieldChange', 'visible': True},
{'setting_name': 'showAllDividends', 'visible': True},
]
profile.save()
print("user saved in db")
# user = UserProfile.objects.get(user_id=user_id)
data = {
'user_id': profile.user_id,
'searches': profile.searches,
'display_settings': profile.display_settings
}
json_data = json.dumps(data)
return HttpResponse({json_data}, content_type='application/json')
models
class UserProfile(models.Model):
user_id = models.CharField(max_length=255, unique=True)
searches = models.ArrayField(model_container=RecentSearch, null=True)
display_settings = models.ArrayField(model_container=DisplaySetting, null=True)
objects = models.DjongoManager()

Related

Getting django.db.utils.ProgrammingError: (1146, “Table ‘password_management.accounts_workspace’ doesn’t exist”) while making db migrations

I am trying to make migrations by running the following command:
python manage.py makemigrations
But, I am getting the below error:
django.db.utils.ProgrammingError: (1146, "Table 'password_management.accounts_workspace' doesn't exist")
I am using MySQL Database named as password_management.
Earlier my Django app was working fine with all the user migrations and stuff. When I made this new Model Workspace, I am getting the above mentioned error.
Full Error Details:
Traceback (most recent call last):
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\mysql\base.py", line 75, in execute
return self.cursor.execute(query, args)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\MySQLdb\cursors.py", line 206, in execute
res = self._query(query)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\MySQLdb\cursors.py", line 319, in _query
db.query(q)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\MySQLdb\connections.py", line 254, in query
_mysql.connection.query(self, query)
MySQLdb._exceptions.ProgrammingError: (1146, "Table 'password_management.accounts_workspace' doesn't exist")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\Projects\meistery\projects\pricing_password_management_poc\inviteandresetpass\manage.py", line 22, in <module>
main()
File "D:\Projects\meistery\projects\pricing_password_management_poc\inviteandresetpass\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
self.execute(*args, **cmd_options)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\management\base.py", line 455, in execute
self.check()
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\management\base.py", line 487, in check
all_issues = checks.run_checks(
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\checks\registry.py", line 88, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\checks\urls.py", line 42, in check_url_namespaces_unique
all_namespaces = _load_all_namespaces(resolver)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\core\checks\urls.py", line 61, in _load_all_namespaces
url_patterns = getattr(resolver, "url_patterns", [])
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\utils\functional.py", line 49, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\urls\resolvers.py", line 696, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\utils\functional.py", line 49, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\urls\resolvers.py", line 689, in urlconf_module
return import_module(self.urlconf_name)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "D:\Projects\meistery\projects\pricing_password_management_poc\inviteandresetpass\inviteandresetpass\urls.py", line 21, in <module>
path("accounts/", include("apps.accounts.urls")), # URLs of Login/Registration System
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\urls\conf.py", line 38, in include
urlconf_module = import_module(urlconf_module)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "D:\Projects\meistery\projects\pricing_password_management_poc\inviteandresetpass\apps\accounts\urls.py", line 4, in <module>
from .views import (
File "D:\Projects\meistery\projects\pricing_password_management_poc\inviteandresetpass\apps\accounts\views.py", line 16, in <module>
from .forms import (
File "D:\Projects\meistery\projects\pricing_password_management_poc\inviteandresetpass\apps\accounts\forms.py", line 14, in <module>
for i in range(len(workspaces)):
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\models\query.py", line 302, in __len__
self._fetch_all()
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\models\query.py", line 1507, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\models\query.py", line 57, in __iter__
results = compiler.execute_sql(
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\models\sql\compiler.py", line 1361, in execute_sql
cursor.execute(sql, params)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\utils.py", line 103, in execute
return super().execute(sql, params)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\utils.py", line 67, in execute
return self._execute_with_wrappers(
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\django\db\backends\mysql\base.py", line 75, in execute
return self.cursor.execute(query, args)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\MySQLdb\cursors.py", line 206, in execute
res = self._query(query)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\MySQLdb\cursors.py", line 319, in _query
db.query(q)
File "D:\Projects\meistery\venvs\inviteandresetpass\lib\site-packages\MySQLdb\connections.py", line 254, in query
_mysql.connection.query(self, query)
django.db.utils.ProgrammingError: (1146, "Table 'password_management.accounts_workspace' doesn't exist")
My Workspace model is below:
class Workspace(models.Model):
name = models.CharField(max_length=254)
name_slug = models.SlugField(editable=False)
admin = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self) -> str:
"""
Returns a string to as an instance name
"""
return (self.name)
def save(self, *args, **kwargs):
if self.name:
try:
group = Group.objects.get(name=self.name)
group.delete()
except Exception as ex:
print(ex)
permissions = Permission.objects.all
for p in permissions:
if p.name.endswith(self.name):
p.delete()
super(Workspace, self).save(*args, **kwargs)
self.name_slug = slugify(self.name)
workspace_group = Group.objects.create(
name="manage-" + self.name_slug
)
content_type = ContentType.objects.get_for_model(Workspace)
permissions = []
permissions.append(
Permission.objects.create(
codename='can_remove_from_workspace_%s' % self.name_slug,
name='Can Remove User From Workspace %s' % self.name,
content_type=content_type,
)
)
permissions.append(
Permission.objects.create(
codename='can_add_to_workspace_%s' % self.name_slug,
name='Can Add User To Workspace %s' % self.name,
content_type=content_type,
)
)
permissions.append(
Permission.objects.create(
codename='can_view_from_workspace_%s' % self.name_slug,
name='Can View User From Workspace %s' % self.name,
content_type=content_type,
)
)
workspace_group.permissions.set(permissions)
super(Workspace, self).save(*args, **kwargs)
def make_admin(self, user):
user.add_workspace(self)
self.admin = user
self.save()
def remove_admin(self):
self.admin = None
self.save()
def invite_workspace_user(self, user, invite_form_data):
workspace = invite_form_data["workspace"]
invitation = Invitation.objects.create(
created_by = user,
invitee_email = invite_form_data["invitee_email"],
invitee_first_name = invite_form_data["invitee_first_name"],
invitee_last_name = invite_form_data["invitee_last_name"]
)
invitation.send_invite_user_email(workspace)
def get_by_name(self, name):
try:
return self.objects.get(name=name)
except:
return None
In admins.py I have:
from .models import Workspace
admin.site.register(Workspace)
In forms.py I have:
from .models import Workspace
WORKSPACES_CHOICES = []
workspaces = Workspace.objects.all()
for i in range(len(workspaces)):
WORKSPACES_CHOICES.append(tuple((str(i + 1), workspaces[i].name)))
WORKSPACES_CHOICES = tuple(WORKSPACES_CHOICES)
class InviteUserByAdminForm(forms.ModelForm):
workspaces = forms.MultipleChoiceField(
widget=forms.CheckboxSelectMultiple,
choices=WORKSPACES_CHOICES
)
class Meta:
model = Invitation
fields = (
"invitee_first_name",
"invitee_last_name",
"sent_to",
"workspaces",
)
I have already tried all the solutions mentioned in this thread at stackoverflow. But, none of them worked for me.
Anyone can tell me what's wrong?

if model._meta.abstract: AttributeError: type object 'ProductObject' has no attribute '_meta'

I want to add one of my models to the admin panel, but this error falls:
> Traceback (most recent call last): File
> "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\threading.py",
> line 932, in _bootstrap_inner
> self.run() File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\threading.py",
> line 870, in run
> self._target(*self._args, **self._kwargs) File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\autoreload.py",
> line 53, in wrapper
> fn(*args, **kwargs) File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\commands\runserver.py",
> line 109, in inner_run
> autoreload.raise_last_exception() File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\autoreload.py",
> line 76, in raise_last_exception
> raise _exception[1] File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\__init__.py",
> line 357, in execute
> autoreload.check_errors(django.setup)() File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\autoreload.py",
> line 53, in wrapper
> fn(*args, **kwargs) File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\__init__.py",
> line 24, in setup
> apps.populate(settings.INSTALLED_APPS) File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\apps\registry.py",
> line 122, in populate
> app_config.ready() File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\apps.py",
> line 24, in ready
> self.module.autodiscover() File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\__init__.py",
> line 26, in autodiscover
> autodiscover_modules('admin', register_to=site) File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\module_loading.py",
> line 47, in autodiscover_modules
> import_module('%s.%s' % (app_config.name, module_to_search)) File
> "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\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\smirn\OneDrive\Desktop\SYZYGY\Coding\Python\Django\Megan\Fridge\admin.py",
> line 13, in <module>
> admin.site.register([Product, Fridge, ProductObject]) File "C:\Users\smirn\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\sites.py",
> line 104, in register
> if model._meta.abstract: AttributeError: type object 'ProductObject' has no attribute '_meta'
models.py:
from django.db import models as m
from django.conf import settings
import datetime
def mounth():
now = datetime.datetime.now()
return now + datetime.timedelta(days=20)
class Product(m.Model):
product_name = m.CharField(max_length=200)
product_calories = m.PositiveIntegerField(blank=True)
def __str__(self):
return self.product_name
class Fridge(m.Model):
OPTIONS = (
("1", "BASIC"),
("2", "PRO"),
("3", "KING"),
)
fridge_owner = m.ForeignKey(settings.AUTH_USER_MODEL, on_delete=m.CASCADE)
fridge_mode = m.CharField(max_length=5, choices=OPTIONS)
class Recipe(m.Model):
recipe_name = m.CharField(max_length=200)
recipe_products = m.ManyToManyField(Product)
recipe_description = m.TextField()
def __str__(self):
return self.recipe_name
class ProductObject(): # Не знаю как сделать правильно. Вдруг это можно реализовать по другому
product_obj_fridge = m.ForeignKey(Fridge, on_delete=m.CASCADE)
product_obj_product = m.ManyToManyField(Product)
product_shelf_life = m.DateField(default=mounth())
product_count = m.PositiveIntegerField(default=1)
class Meta:
ordering = ('product_shelf_life', )
admin.py:
from django.contrib import admin
from .models import Product, Fridge, Recipe, ProductObject
from tinymce.widgets import TinyMCE
from django.db import models
# Register your models here.
class RecipeAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': TinyMCE}
}
admin.site.register([Product, Fridge, ProductObject])
admin.site.register(Recipe, RecipeAdmin)
If I remove the ProductObject in the registration in the admin panel, then there will be no error, but I do not understand this error at all. It seems that everything should be correct, but for some reason not
Please, help me!
In model ProductObject you are missing m.Model in the definition.
Without this the Meta field can not be constructed.

ImportError: cannot import name 'ApiException' running python manage.py

I am not able to import from rest_framework.exceptions import ApiException
This is my Exception.py:
class APIException(Exception):
status_code = status.HTTP_500_INTERNAL_SERVER_ERROR
default_detail = _('A server error occurred.')
default_code = 'error'
def __init__(self, detail=None, code=None):
if detail is None:
detail = self.default_detail
if code is None:
code = self.default_code
self.detail = _get_error_details(detail, code)
def __str__(self):
return self.detail
def get_codes(self):
return _get_codes(self.detail)
def get_full_details(self):
return _get_full_details(self.detail)
error while running : python manage.py makemigrations networscanners
Traceback (most recent call last):
File "manage.py", line 25, in <module>
execute_from_command_line(sys.argv)
File "D:\Python36-32\lib\site-packages\django\core\management\__init__.py", li
ne 381, in execute_from_command_line
utility.execute()
File "D:\Python36-32\lib\site-packages\django\core\management\__init__.py", li
ne 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "D:\Python36-32\lib\site-packages\django\core\management\base.py", line 3
23, in run_from_argv
self.execute(*args, **cmd_options)
File "D:\Python36-32\lib\site-packages\django\core\management\base.py", line 3
61, in execute
self.check()
File "D:\Python36-32\lib\site-packages\django\core\management\base.py", line 3
90, in check
include_deployment_checks=include_deployment_checks,
File "D:\Python36-32\lib\site-packages\django\core\management\base.py", line 3
77, in _run_checks
return checks.run_checks(**kwargs)
File "D:\Python36-32\lib\site-packages\django\core\checks\registry.py", line 7
2, in run_checks
new_errors = check(app_configs=app_configs)
File "D:\Python36-32\lib\site-packages\django\core\checks\urls.py", line 13, i
n check_url_config
return check_resolver(resolver)
File "D:\Python36-32\lib\site-packages\django\core\checks\urls.py", line 23, i
n check_resolver
return check_method()
File "D:\Python36-32\lib\site-packages\django\urls\resolvers.py", line 400, in
check
for pattern in self.url_patterns:
File "D:\Python36-32\lib\site-packages\django\utils\functional.py", line 80, i
n __get__
res = instance.__dict__[self.name] = self.func(instance)
File "D:\Python36-32\lib\site-packages\django\urls\resolvers.py", line 585, in
url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "D:\Python36-32\lib\site-packages\django\utils\functional.py", line 80, i
n __get__
res = instance.__dict__[self.name] = self.func(instance)
File "D:\Python36-32\lib\site-packages\django\urls\resolvers.py", line 578, in
urlconf_module
return import_module(self.urlconf_name)
File "D:\Python36-32\lib\importlib\__init__.py", line 127, 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:\archerysec framework\archerysec-master\archerysecurity\urls.py", line
36, in <module>
from rest_framework_jwt.views import obtain_jwt_token, verify_jwt_token
File "D:\Python36-32\lib\site-packages\rest_framework_jwt\views.py", line 1, i
n <module>
from rest_framework.views import APIView
File "D:\Python36-32\lib\site-packages\rest_framework\views\__init__.py", line
1, in <module>
from .base import BaseApiView
File "D:\Python36-32\lib\site-packages\rest_framework\views\base.py", line 5,
in <module>
from rest_framework.exceptions import ApiException
ImportError: cannot import name 'ApiException'
It's APIException (rest_framework.exceptions.APIException), not ApiException.

ValueError: dictionary update sequence element #0 has length 1; 2 is required

I can not locate this error.
Error is genereted after I added one field in disease that is contact and taggable manager in models
If that is correct than is this error is generated due to Id field that I gave manually
Help to me get out of this!!
personal(myapp)/urls.py
urlpatterns = [
url(r'^.*doctorsu/$', views.doctorsu.as_view(), name = 'doctorsu'),
url(r'^.*disease/$', views.AddDisease.as_view(), name = 'AddDisease'),
]
mysite/urls.py
urlpatterns = [
url(r'^$',include('personal.urls')),
url(r'^taggit/',include('taggit_selectize.urls')),
]
models.py
class DoctorSignup(models.Model):
contact_regex = RegexValidator(regex=r'^[789]\d{9}$',message="Phone number must be start with 7,8 or 9")
doid = models.AutoField(verbose_name='Doctor Id',primary_key=True,default=0)
email = models.CharField(max_length=50)
contact = models.CharField(validators=[contact_regex])
class TaggedSymptoms(TaggedItemBase):
content_object = models.ForeignKey("Disease")
class TaggedMedicine(TaggedItemBase):
content_object = models.ForeignKey("Disease")
class Disease(models.Model):
did = models.AutoField(verbose_name='Disease Id', primary_key=True,default=0)
dName = models.CharField(max_length=20)
dtype = models.CharField(max_length=10)
symptoms = TaggableManager(through=TaggedSymptoms)
symptoms.rel.related_name = "+"
medi = TaggableManager(through=TaggedMedicine)
medi.rel.related_name = "+"
views.py
class doctorsu(TemplateView):
template_name = 'personal/doctorsu.html'
def get(self, request):
dsform = DoctorSignupForm()
data = DoctorSignup.objects.all()
args = {'dsform': dsform,'data': data}
return render(request,self.template_name,args)
def post(self, request):
dsform = DoctorSignupForm(request.POST)
if dsform.is_valid():
dsform.save()
cd = dsform.cleaned_data
args = {'dsform': dsform , 'cd': cd}
return render(request,self.template_name,args)
return render(request, 'personal/doctorsu.html')
class AddDisease(TemplateView):
template_name = 'personal/disease.html'
def get(self, request):
dform = DiseaseForm()
ddata = Disease.objects.all()
args = {'dform': dform,'ddata': ddata}
return render(request,self.template_name,args)
def post(self, request):
dform = DiseaseForm(request.POST)
if dform.is_valid():
dform.save()
cd = dform.cleaned_data
args = {'dform': dform , 'cd': cd}
return render(request,self.template_name,args)
forms.py
class DoctorSignupForm(forms.ModelForm):
dname = forms.CharField()
email = forms.EmailField()
contact = forms.RegexField(regex=r'^[789]\d{9}$',error_messages="Enter valid phone no.")
class Meta:
model = DoctorSignup
fields = "__all__"
class DiseaseForm(ModelForm):
dName = forms.CharField(help_text="Enter disease")
symptoms = TagField(help_text="Enter symptoms separated by comma")
medicine = TagField()
class Meta:
model = Disease
fields = "__all__"
Traceback
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
utility.execute()
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\management\__init__.py", line 355, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\management\base.py", line 327, in execute
self.check()
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\management\base.py", line 359, in check
include_deployment_checks=include_deployment_checks,
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\management\base.py", line 346, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\checks\urls.py", line 16, in check_url_config
return check_resolver(resolver)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\core\checks\urls.py", line 26, in check_resolver
return check_method()
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\urls\resolvers.py", line 254, in check
for pattern in self.url_patterns:
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\urls\resolvers.py", line 405, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\utils\functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\urls\resolvers.py", line 398, in urlconf_module
return import_module(self.urlconf_name)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\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 "E:\IT\project\program\20-8-17\mysite\mysite\urls.py", line 7, in <module>
url(r'^$',include('personal.urls')),
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\conf\urls\__init__.py", line 50, in include
urlconf_module = import_module(urlconf_module)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\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 "E:\IT\project\program\20-8-17\mysite\personal\urls.py", line 2, in <module>
from . import views
File "E:\IT\project\program\20-8-17\mysite\personal\views.py", line 3, in <module>
from personal.forms import *
File "E:\IT\project\program\20-8-17\mysite\personal\forms.py", line 50, in <module>
class DoctorSignupForm(forms.ModelForm):
File "E:\IT\project\program\20-8-17\mysite\personal\forms.py", line 90, in DoctorSignupForm
contact = forms.RegexField(regex=r'^[789]\d{9}$',error_messages="Enter valid phone no.")
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\fields.py", line 517, in __init__
super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\fields.py", line 228, in __init__
super(CharField, self).__init__(*args, **kwargs)
File "C:\Users\Charmi Shah\AppData\Local\Programs\Python\Python35-32\lib\site-packages\django\forms\fields.py", line 122, in __init__
messages.update(error_messages or {})
ValueError: dictionary update sequence element #0 has length 1; 2 is required
error_messages should be a dict, not a string.
See the docs.

Django cannot import name (model)

I have two files under this app that are messing up. One updates the cache and the other is my models.py file. For some reason I get ImportError: cannot import name 'Cache' Whenever I try to load the server. Moving the Cache definition above the NavigationItem definition worked for one test boot but has failed every time since.
navbar/models.py
from django.db import models
from navbar.generator import update_navigation
from datetime import datetime
import logging
class NavigationItem(models.Model):
# The title used in the navar
title = models.CharField(max_length=25, blank=False)
# The dir it points to
dir = models.ForeignKey('library.Dir', blank=True, null=True)
# The level above it
previous_level = models.ForeignKey('NavigationItem', on_delete=models.SET_NULL, null=True, blank=True)
# Is it on the top level
top_level = models.BooleanField(default=False)
# Shortcut
show_all_subdirs = models.BooleanField(default=False)
# position on the list
position = models.SmallIntegerField(default=15)
# last modified:
last_modified = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
def __repr__(self):
return "({}) {}".format(self.pk, self.title)
def save(self, *args, **kwargs):
super(NavigationItem, self).save(*args, **kwargs)
logging.INFO("Saved Navbar at " + datetime.now())
update_navigation()
class Cache(models.Model):
key = models.CharField(max_length=10, default="key", unique=True)
data = models.TextField()
timestamp = models.DateTimeField(auto_now=True)
navbar/generator.py
from navbar.models import Cache, NavigationItem
from datetime import datetime
import logging
def render_navigation():
query = Cache.objects.filter(key="nav")
if query.count() > 0:
return query[0].data
else:
return update_navigation()
def update_navigation():
# Strings used in the generation of templates
dropdown = '''<li>
<a class="dropdown-toggle" data-toggle="dropdown" href="{}">{} <span class="caret"></span></a>
<ul class="dropdown-menu">
{}
</ul>
</li>
'''
link = '<li>{}</li>'
# inner functions
def generate_navigation(navigation_items):
# The string to be returned
result = ""
# for every item in the list that we get
for item in navigation_items:
# if the item points somewhere get the path otherwise make a hash
path = item.dir.path if item.dir else "#"
# if it has sub-navigation items
if item.navigationitem_set.count() > 0:
# the query below will get all the navigation items under this one sorted properly
query = item.navigationitem_set.all().order_by('position')
result += dropdown.format(path, item.title, generate_navigation(query))
elif item.show_all_subdirs and item.dir is not None:
result += render_subdirs(item.dir)
else:
result += link.format(path, item.title)
return result
def render_subdirs(directory):
result = ""
for folder in directory.dir_set.all().order_by('title'):
if folder.dir_set.count() > 0:
result += dropdown.format(folder.path, folder.title, render_subdirs(folder))
else:
result += link.format(folder.path, folder.title)
return result
# The meat of the function
# Log the timestamps for debugging and logistics
logging.INFO("Navbar Render Begun at " + datetime.now())
query = NavigationItem.objects.filter(top_level=True).order_by('position')
result = generate_navigation(query)
logging.INFO("Navbar Rendered at " + datetime.now())
if Cache.objects.filter(key="nav").count() > 0:
cache = Cache.objects.get(key="nav")
cache.data = result # WTF HOW DID I FORGET THIS???
else:
cache = Cache(key="nav", data=result)
cache.save()
logging.INFO("Navbar Saved at: " + datetime.now())
return result
Full error:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Program Files\Python 3.5\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line
utility.execute()
File "C:\Program Files\Python 3.5\lib\site-packages\django\core\management\__init__.py", line 341, in execute
django.setup()
File "C:\Program Files\Python 3.5\lib\site-packages\django\__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Program Files\Python 3.5\lib\site-packages\django\apps\registry.py", line 108, in populate
app_config.import_models(all_models)
File "C:\Program Files\Python 3.5\lib\site-packages\django\apps\config.py", line 199, in import_models
self.models_module = import_module(models_module_name)
File "C:\Program Files\Python 3.5\lib\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 662, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "C:\Users\User\project\navbar\models.py", line 2, in <module>
from navbar.generator import update_navigation
File "C:\Users\User\project\navbar\generator.py", line 1, in <module>
from navbar.models import Cache, NavigationItem
ImportError: cannot import name 'Cache'
That's normal as you're having a circular import (models.py importing from generator.py and vise-versa)
Try to use method import inside your models then it should be fixed:
class NavigationItem(models.Model):
...
def save(self, *args, **kwargs):
# Method level import to avoid circular imports
from .navigation import update_navigation
super(NavigationItem, self).save(*args, **kwargs)
logging.INFO("Saved Navbar at " + datetime.now())
update_navigation()

Categories