В моем проекте я хочу реализовать пользовательскую модель пользователя, которая включена в мое приложение для пользователей и включена в мои настройки, в которой есть запись для проекта, над которым в данный момент ведется работа. Таким образом, моя пользовательская модель должна выглядеть следующим образом:
from django.db import models
from django.contrib.auth.models import AbstractUser
from api.models import Project
class User(AbstractUser):
current_project = models.ForeignKey(
Project,
on_delete=models.SET_NULL,
null=True,
)
Хотя моя модель Project в приложении API в основном выглядит как
from django.db import models
from users.models import User
class Project(models.Model):
name = models.CharField(max_length=50)
description = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(
User,
on_delete=models.SET_NULL,
null=True,
related_name="api_project_author",
related_query_name="api_project_authors"
)
edited_at = models.DateTimeField(blank=True, null=True)
editor = models.ForeignKey(
User,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="api_project_editor",
related_query_name="api_project_editors"
)
Однако, если я запускаю это, я получаю ImportError: не могу импортировать имя 'User' из 'users.models' , что, очевидно, происходит из-за ссылки в моей модели User, которая затем пытается импортировать модель User из-за ее других ссылок. Поэтому моя идея состояла в том, чтобы создать новую модель UserSetting в приложении API, например
class UserSetting(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
project = models.ForeignKey(Project, on_delete=models.SET_NULL, null=True)
Однако я не уверен, как правильно решать подобные проблемы или избегать их.
Я использую Django 2,2 и Python 3,7,3