У меня есть приложение Django, в которое зарегистрированные пользователи могут добавлять через форму ввода подробную информацию о выступлениях своего музыкального ансамбля c. Это приложение также имеет раздел для композиторов, где они добавляют свои собственные композиции. Я использую пользовательскую модель пользователя с профилями, связанными с учетными записями пользователей:
class User(AbstractBaseUser):
email = models.EmailField(verbose_name="email", unique=True, max_length=255)
first_name = models.CharField(max_length=30, blank=True, null=True)
[...]
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
[...]
Это моя модель композиции:
class Composition(models.Model):
title = models.CharField(max_length=120) # max_length = required
composer = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
[...]
А это моя модель производительности , Информация об исполнении ссылается на исполненную пьесу (performed
):
class Performance(models.Model):
performed = models.ManyToManyField(Composition, blank=True)
[...]
Пока все хорошо. Теперь я хотел бы, чтобы исполнители могли добавлять произведения композиторов, которые еще не зарегистрированы на сайте. Допустим, исполнитель исполнил пьесу Джона Леннона и добавляет информацию об этом спектакле. Таким образом, исполнителю нужно будет добавить как Джона Леннона, так и его композицию, и связать их.
Самый важный момент: если призрак Джона Леннона завтра захочет зарегистрироваться на сайте, Администратор сайта должен иметь возможность легко связать композиции, уже добавленные исполнителями, с недавно созданной учетной записью Джона Леннона. Это возможно? Я полагаю, что ключом к решению этой проблемы является изменение composer = models.ForeignKey(settings.AUTH_USER_MODEL...
на что-то другое, то есть с использованием промежуточной модели. Будем очень благодарны за любые предложения.