Я не могу определить ForeignKey
отношение из UsersGroups
модели с двумя другими моделями Roles
и Users
. Выдает ошибку -
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/db/models/fields/related.py", line 786, in __init__
to._meta.model_name
AttributeError: type object 'Roles' has no attribute '_meta'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
raise _exception[1]
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 357, in execute
autoreload.check_errors(django.setup)()
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/apps/registry.py", line 114, in populate
app_config.import_models()
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/apps/config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "/usr/local/opt/python/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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 "/Users/jeetpatel/Desktop/eitan-app/users_and_auth/models.py", line 31, in <module>
class UsersGroups():
File "/Users/jeetpatel/Desktop/eitan-app/users_and_auth/models.py", line 33, in UsersGroups
group_id = models.ForeignKey(Roles, on_delete=models.CASCADE, blank= False)
File "/Users/jeetpatel/Desktop/env/lib/python3.7/site-packages/django/db/models/fields/related.py", line 792, in __init__
RECURSIVE_RELATIONSHIP_CONSTANT,
AssertionError: ForeignKey(<class 'users_and_auth.models.Roles'>) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string 'self'
class Roles():
group_name = models.CharField(max_length=255, unique=True, blank=False)
class Users(AbstractBaseUser, PermissionsMixin):
"""
This model is used to store user login credential and profile information.
It's a custome user model but used for Django's default authentication.
"""
email = models.EmailField(max_length=255, unique=True)
first_name = models.CharField(max_length=255, blank=False, null=False)
last_name = models.CharField(max_length=255, blank=False, null=False)
profile_picture = models.ImageField(upload_to='profile_pictures/', max_length=None, null=True, blank=True)
is_active = models.BooleanField(default=True)
# defing a custome user manager class for the custome user model.
objects = managers.UserManager()
# using email a unique identity for the user and it will also allow user to use email while logging in.
USERNAME_FIELD = 'email'
class UsersGroups():
user_id = models.ForeignKey(Users, on_delete=models.CASCADE, blank=False)
group_id = models.ForeignKey(Roles, on_delete=models.CASCADE, blank= False)
Как указано в документации, я предоставил model name
в качестве первого аргумента для ForeignKey
, а также передал аргумент on_delete=models.CASCADE