Python 如何在Django应用程序中连接两个mysql表

Python 如何在Django应用程序中连接两个mysql表,python,mysql,django,Python,Mysql,Django,我的MySQL数据库中有两个表: 第一个表:用于订阅者(id、名称、区域、subscriberNumber、phoneNumber) 第二个表格:用于每月付款(id、订阅号、月、年、金额、折扣、罚款、账单号) 我有一个HTML页面,其中包含订阅者列表。每当管理员点击其中一个订阅服务器时,就会显示用户的详细信息。但目前我只能显示用户的详细信息(从第一个表)。我希望页面显示他/她全年支付的款项清单(从第二个表中)。我想连接这些表,并在一个HTML页面中显示这两个表的详细信息 这是在views.py中

我的MySQL数据库中有两个表:

第一个表:用于订阅者(id、名称、区域、subscriberNumber、phoneNumber)

第二个表格:用于每月付款(id、订阅号、月、年、金额、折扣、罚款、账单号)

我有一个HTML页面,其中包含订阅者列表。每当管理员点击其中一个订阅服务器时,就会显示用户的详细信息。但目前我只能显示用户的详细信息(从第一个表)。我希望页面显示他/她全年支付的款项清单(从第二个表中)。我想连接这些表,并在一个HTML页面中显示这两个表的详细信息

这是在views.py中显示第一个表的数据的代码

@login_required
def userDetail(request, id=None):
    instance = get_object_or_404(Subscribers.objects.using('db2'), id=id)
    context = {
        "Name": instance.name,
        "instance": instance,
    }
    return render(request, 'userDetail.html', context)
如何在同一页面上显示用户完成的付款及其详细信息

Models.py

from __future__ import unicode_literals
from django.db import models
from django.core.urlresolvers import reverse

class Subscribers(models.Model):
    name = models.CharField(max_length=120)
    area = models.CharField(max_length=30)
    phoneNumber = models.CharField(max_length=10)
    installationCost = models.CharField(max_length=10)
    subsNumber = models.CharField(max_length=100)

    def get_absolute_url(self):
        return reverse("userDetail", kwargs={"id": self.id})


class Payments(models.Model):
    month = models.CharField(max_length=120)
    year = models.CharField(max_length=4)
    amount = models.CharField(max_length=10)
    discount = models.CharField(max_length=10)
    fine = models.CharField(max_length=10)
    billNumber = models.CharField(max_length=100)
    subsNumber = models.CharField(max_length=100)

    def get_absolute_url(self):
        return reverse("userDetail", kwargs={"id": self.id})

要显示用户的付款,您可以使用:

instance = get_object_or_404(Subscribers.objects.using('db2'), id=id)
try:    
    payment_info = Payments.objects.using('db2').get(subsNumber=instance.subsNumber)
except Payments.DoesNotExist:
    payment_info = None
context = {
    "Name": instance.name,
    "instance": instance,
    "payment": payment_info
}

为什么要用这么多的困惑

改为这样做

instance = Subscribers.objects.using('db2').get(id=id)
payment_info = Payments.objects.using('db2').get(subsNumber=instance.subsNumber)
context = {
    "Name": instance.name,
    "instance": instance,
    "payment": payment_info
}

你能发布
models.py
吗?我用models.py@arunada
ForeignKey
编辑了这个问题,将它们链接起来。我怎样才能使用
ForeignKey
。\u Cthulhu\u Kid你能帮我吗
付款匹配查询不存在。
当我使用上述代码时会显示错误我正在关闭整个项目。请等一下。Mysql不工作。对不起,你以前的ans工作得很好。我不知道是什么问题。我重新启动了整个应用程序,它工作了。thanksI在前一段时间@Exprator做了这件事,但是出现了相同的错误
付款匹配查询不存在。
告诉我两种型号的号码相同吗??如果它们不相同,则会出现错误,请尝试将数字更改为订阅者为某个用户提供的数字,然后为该订阅者提供该数字。请您在两个表中保留相同的子数字,或者您必须使用ForeignKey映射来帮助完成整个项目。请等一下。Mysql不工作。对不起,是的,成功了。我在两张桌子上都有号码。我不知道是什么问题,但它起了作用。谢谢兄弟