django - 如何创建附加表来链接模型?
问题描述
有两种型号Modules()
和ParentCategory()
。它们在数据库中没有以任何方式链接。
class Modules(models.Model):
.....
class ParentCategory(models.Model):
....
我想按照以下原则将它们联系起来。一个模块包含多个类别。用字典描述了这个结构,其中字典键 - 模块名称和属于该模块的类别列表的值。
pc_to_modules_assign = {
"DTH": ['COMMON S2P', 'COMMON SOURCING', 'SERVICES', 'SOURCING'],
"KLK": ['COMMON S2P', 'COMMON SOURCING', 'SERVICES', 'SXM'],
"ODJU": ['COMMON S2P', 'SERVICES', 'Analytics'],
"TD": ['COMMON S2P', 'SERVICES', 'CLM'],
"MNH": ['COMMON S2P', 'SERVICES', 'eProcurement'],
"OPI": ['COMMON S2P', 'SERVICES', 'I2P'],
"AP": ['COMMON S2P', 'SERVICES', 'I2P', 'AP'],
"DF": ['COMMON S2P', 'COMMON SOURCING', 'SERVICES', 'SOURCING', 'SXM', 'Analytics', 'CLM'],
"CVB": ['COMMON S2P', 'SERVICES', 'eProcurement', 'I2P'],
"GFT": ['COMMON S2P', 'COMMON SOURCING', 'SERVICES', 'SOURCING', 'SXM', 'Analytics', 'CLM', 'eProcurement', 'I2P']
}
列表中有一个primary
类别。在这样的模型中应该使用什么样的连接或大约需要哪些字段。类似的东西。
class PCtoModules(models.Model):
m = .....Modules
pc = ....ParentCategory
primary = models.BooleanField(default=False)
但我对应用哪种类型的连接感到困惑。
解决方案
恕我直言,您不需要额外的桌子。我将通过以下方式连接它们:
class Modules(models.Model):
primary_category = models.ForeignKey('ParentCategory')
categories = models.ManyToManyField('ParentCategory')
class ParentCategory(models.Model):
....
现在,如果我们说这module
是您的Module
类的一个实例,您可以访问模块的主要类别:
module.primary_category
以及所有分配的类别:
module.categories
推荐阅读
- multithreading - Qt 插槽 - 不同速度的发送方/接收方 - 防止数据排队
- python - 如何使用前一列中的值在excel中编写新列
- python - 连接具有特定宽度整数的列
- php - 更改变量后如何保存变量的编号
- jquery - 在元素之前附加没有间隙或重复jquery
- javascript - 函数执行的访问属性(如 doSomething().cool)
- gpu - 如何在 Google Colab 中启用 pytorch GPU 支持?
- r - 使用 R 中的 download.file 下载时跳过错误文件
- apache-kafka-streams - Kafka Streams 窗口化如何工作?
- vba - 删除不需要的内容的宏