我必须将遗留设计与我的Django项目集成,我正在寻找有关使用中介的一些建议。现有的设计有效,但现在我需要通过第三个表来过滤项目。
英语 - 我有一个组织(Django),它指向许多项目(遗产)。但是,所有项目都没有提到该组织。我有一个第三个表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
非常感谢!
答案 0 :(得分:1)
不确定这是否是您的要求,但您可以使用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无论如何都会自动执行多个字段,只要你想添加额外的字段,就可以这样做了。