gpt4 book ai didi

mysql - Django - 如何通过中介链接到遗留数据库?

转载 作者:行者123 更新时间:2023-11-29 00:53:47 25 4
gpt4 key购买 nike

我必须将遗留设计与我的 Django 项目集成,我正在寻找有关使用中介的一些建议。现有设计有效,但现在我需要通过第三个表过滤项目。

英文 - 我有一个组织 (Django),它指向许多项目 (Legacy)。但是所有的项目都没有提到那个组织。我有第三个表 ProjectMap,它是通过触发器构建的来解决这个问题。 Organization.name对应一个项目。

我如何将它们粘合在一起才能执行此操作。

projects = Organization.objects.get(pk=1).projects.all()

它不会只获取第三个表中匹配的所有项目。这是我到目前为止所拥有的..

顺便说一下,如果有人有更好的策略,我会洗耳恭听

class Organization(models.Model):
name = models.CharField(max_length=32)
projects = models.ManyToManyField(Project)

class Project(models.Model):
"""This is the project info page..

Note: 'id' does exist and is the pk.
"""
result_number = models.IntegerField(null=True, db_column='LBLDGRUNNO', blank=True)
building_number = models.IntegerField(db_column='LBLDGNO')
name = models.CharField(max_length=150, db_column='SPIBLGNAME', blank=True)

class Meta:
db_table = u'PROJINFO'
managed = False

class ProjectMap(models.Model):
projinfo_table_id = models.IntegerField(null=True) # 'id' of Project
name = models.CharField(max_length=128, null=True) # 'name' in Organization

非常感谢!

最佳答案

不确定这是否是您的要求,但您可以使用 ManyToManyField 上的 through 调用来定义中间表:

class Organization(models.Model):
name = models.CharField(max_length=32)
projects = models.ManyToManyField(Project, through="ProjectOrganisation")

class Project(models.Model):
#Stuff Here

class ProjectOrganisation(models.Model):
project = models.ForeignKey(Project)
organization = models.ForeignKey(Organization)
#Other Fields Here

无论如何,Django 会自动使用 manytomany 字段执行此操作,只是如果你想添加额外的字段,这就是这样做的方法。

关于mysql - Django - 如何通过中介链接到遗留数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com