将用户/配置文件链接到先前创建的名称的可能性,该名称通过外键链接到模型



我有一个Django应用程序,注册用户可以通过输入表单添加他们音乐合奏的表演细节。这个应用程序还有一个作曲家部分,他们可以在其中添加自己的作品。我使用的是自定义用户模型,配置文件链接到用户帐户:

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...,即使用中间模型。任何建议都将不胜感激。

有不同的方法可以做到这一点,你应该根据自己的口味选择一种:

  • 当你知道实际用户已经注册时,只需删除作文中提到的旧的假用户,并将其替换为实际用户
  • 创建一个名为Artist的新模型,并更改composer关系以引用Artist模型。然后,使用可为null的外键将Artist模型链接到实际用户

最新更新