Django关系映射到GroupSettings

2024-09-26 18:18:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将外部工具的自定义模型映射到一个组,这样我就可以选择哪个组有权访问特定工具。我不擅长这些关系映射。我该怎么做?你知道吗

class ExternalTool(models.Model):
    url = models.CharField(max_length=200)
    name = models.CharField(max_length=20)
    allowed_for_groups = ????

class Group(models.Model):
... (django model)

我想这和外国的关系有关,或者说是一对多的关系。因此,一个组可以访问一个或多个外部工具。你知道吗


Tags: 工具name模型urlformodel关系models
1条回答
网友
1楼 · 发布于 2024-09-26 18:18:33

是否允许多个组使用外部工具?一个组可以访问多个外部工具吗?如果是这样,那么在ExternalToolGroup之间就有一个多对多的关系。你知道吗

在数据库中,解决这个问题的方法是使用桥表。你知道吗

[ ExternalTOol ]  -< [Bridge ] > - [ Group ]

这意味着,您要创建一个桥接表,它的外键同时指向ExternalToolGroup。在Django中,这可以转换为以下模型

class ExternalTool(models.Model):
    url = models.CharField(max_length=200)
    name = models.CharField(max_length=20)
    ...

class Group(models.Model):
    externaltools  = models.ManyToManyField(ExternalTool,
                          through="ExternalToolGroupMapping",
                          verbose_name="list of external tools",
                          related_name="groups")
    ...


class ExternalToolGroupMapping(models.Model):
    """ An intersection table between ExternalTool and Group """
    externaltool = models.ForeignKey(ExternalTool)
    group = models.ForeignKey(Group)
    ...

现在您可以使用et.groups(其中etExternalTool的实例)获得外部工具组的列表。您可以使用g.externaltools(其中gGroup的实例)获得组的外部工具列表

相关问题 更多 >

    热门问题