Django内部加入遗留表

时间:2011-10-04 10:31:05

标签: django django-models

我是Django的新手并在遗留数据库中使用它,我想执行一个非常简单的表连接。

Table1:Purchase
PurchaseId(PK)
SupplierId(FK)
Date

Table2:Supplier
SupplierId(PK)
Name

使用SyncDB后,它创建了

模型

class Purchase(models.Model):
purchaseid = models.AutoField(primary_key=True,db_column=u'PurchaseId')
supplierid = models.ForeignKey(Supplier, db_column=u'SupplierId')
date = models.DateTimeField(db_column=u'Date')

class Supplier(models.Model):
supplierid = models.AutoField(primary_key=True,db_column=u'SupplierId')
name = models.CharField(max_length=45, db_column=u'name', blank=True)

我想得到一个简单的连接结果,根据我试过的其他帖子

查看

def purchaseList(request):
    purchase_list = Purchase.objects.extra(tables=["Supplier"],
                                           where=["Purchase.supplierId = Supplier.supplierid"])
    return render_to_response('purchaseList.html', {'purchase_list': purchase_list})

这是正确的方法吗?如何在模板中的表格报告中获取Purchase.Date和Supplier.Name?我试过谷歌搜索答案,但我找不到任何答案,我希望这不是一个重复的问题。非常感谢提前!

1 个答案:

答案 0 :(得分:1)

您不需要通过外键告诉ORM加入相应的ID。您所需要的只是 love select_related(),请参阅https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related

查询将如下所示:

purchase_list = Purchase.objects.select_related().all()