Django Table 加入

Django Table Join

我正在查看 django 连接以获得一些查询集。 我已经声明了两个这样的模型

class PortService(models.Model):
    port=models.IntegerField()
    service=models.TextField()
    class Meta:
        unique_together=(('port','service'),)

class ServiceDefects(models.Model):
    port=models.ForeignKey('PortService')
    defect_id=models.TextField()
    defect_description=models.TextField()
    class Meta:
        unique_together=(('port','defect_id'),)

我想获取 ServiceDefects class 的所有条目,它具有端口号 80 和名为 'Apache' 的服务。为此,我写了这样的查询:

ServiceDefects.objects.filter(portservice__port=80).filter(portservice__service='Apache') 

有帮助吗??提前致谢。

您应该将两个条件都写在一个过滤器中:

ServiceDefects.objects.filter(port__port=80, port__service='Apache')

外键字段被称为port,而不是portservice,所以你应该这样做:

ServiceDefects.objects.filter(port__port=80).filter(port__service='Apache')

您可能更愿意将两个参数放在一个 filter():

ServiceDefects.objects.filter(port__port=80, port__service='Apache')