开发者

Django - How to link to a legacy database via intermediary?

I have to integrate a legacy design with my Django project and I am looking for some advice on using an intermediary. The existing design works but now I need to filter the Project by a third table.

In english - I have a Organization (Django) and which points to many Projects (Legacy). But all of the Project don't refer to that Organization. I have a third table ProjectMap whic开发者_如何转开发h was build via a Trigger to address that. It corresponds the Organization.name to a project.

How do I glue this together in order allow me to do this.

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

And it won't get ALL of the projects just the ones which match in the third table. Here is what I have so far..

By the way if anyone has a better strategy I'm all ears

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

Thanks so much!


Not sure if this is what your asking, but you can use the through call on the ManyToManyField to define an intermediate table:

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 does this automatically with manytomany fields anyway, just if you want to add extra fields, this is the way to do it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜