django - Django 中多对多字段结构所需的建议
问题描述
我正在构建一个 Angular 应用程序将使用的 REST-API - 这是为我的吉他公司的网站准备的。有一个艺术家个人资料页面,其中显示艺术家的姓名、简短的个人简介和与他们相关的项目(乐队)的列表以及他们与他们一起活动的日期范围。这就是事情变得复杂的地方。
任何给定的项目都可以与不止一位艺术家相关联——即我可以有来自同一乐队的两位吉他手。我能够通过创建一个多对多的领域来解决这种关联,并且效果很好……直到我意识到我的艺术家在不同的时间都在同一个乐队中。
到目前为止,我已经尝试了很多方法。我希望我能列出它们,但我有点迷失了方向。但是,下面的代码是我现在所处的位置。我确实可以将一个乐队与多个艺术家相关联,但我不能将不同的日期范围与同一乐队中的不同艺术家相关联。非常感谢任何指导。
class projectDate(models.Model):
begin = models.DateField()
end = models.DateField()
def __str__(self):
string_date_range = self.begin.strftime("%d/%m/%y") + "-" + self.end.strftime("%d/%m/%y")
return string_date_range
class artistProfiles(models.Model):
artist_name = models.CharField(max_length=20)
artist_image = models.URLField()
description = models.TextField(max_length=500)
band_website = models.URLField()
def __str__(self):
return self.artist_name
class artistProjects(models.Model):
project_name = models.CharField(max_length=20)
dates = models.ManyToManyField(projectDate, related_name='date_span')
artists = models.ManyToManyField(artistProfiles, related_name='projects')
def __str__(self):
return self.project_name
class artistSocialMedia(models.Model):
facebook = models.URLField()
twitter = models.URLField()
instagram = models.URLField()
artist = models.ForeignKey(artistProfiles, related_name='social_media', on_delete=models.CASCADE)
def __str__(self):
return self.artist.artist_name
解决方案
不确定我是否可以解决您的问题。我将以简单的方式描述它,以便您可以使用您的模型对其进行调整。这是我的建议。希望它能解决你的问题。
Artist Profile
id (PK)
artist_name
artist_image
description
band_website
Artist Social Media
id (PK)
artist_profile_id (FK)(Artist Profile)
facebook
twitter
instagram
Artist Project
id (PK)
artist_band_project_id (FK)(Artis Band Project)
Artist Band Project
id (PK)
begin
end
Artist Band Project Member
id (PK)
artis_band_project_id (FK)(Artist Band Project)
artis_profile_id (FK)(Artist Profile)
问候,
梅克尔维斯维加亚
推荐阅读
- huawei-mobile-services - 华为地图套件 - 崩溃点击返回按钮
- java - ExecutorService submit() - 并行执行(非阻塞)
- c# - .NET Framework - 环境变量返回 null
- perforce - 我们如何在 WIN server 2019 中为 perforce depot 安装和设置 Perforce 文件资源管理器 P4vx?
- signalr - 如何使用 aspnet core SignalR 向用户发送私人消息?
- java - 请求数组中的循环
- apache-spark - 如何为火花任务或地图操作设置超时?(或跳过长时间运行的任务)
- r - 在 R 中恢复 HoltWinters 预测的固定数据
- rest - 对于 REST 服务中的应用程序错误,建议使用哪种 HTTP 状态代码?
- postgresql - 无法使用 MetricBeat 从 RHEL 7 中的 PostgreSQL 获取指标