首页 > 解决方案 > 如何创建附加表来链接模型?

问题描述

有两种型号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)

但我对应用哪种类型的连接感到困惑。

标签: djangodjango-models

解决方案


恕我直言,您不需要额外的桌子。我将通过以下方式连接它们:

class Modules(models.Model):
    primary_category = models.ForeignKey('ParentCategory')
    categories = models.ManyToManyField('ParentCategory')

class ParentCategory(models.Model):
    ....

现在,如果我们说这module是您的Module类的一个实例,您可以访问模块的主要类别:

module.primary_category

以及所有分配的类别:

module.categories

推荐阅读