Django表加入

时间:2015-02-13 22:51:55

标签: django database join orm

我正在浏览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类的所有条目,其端口号为80,服务名为“Apache”。为此,我写了这样的查询:

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

任何帮助?提前谢谢。

2 个答案:

答案 0 :(得分:2)

外键字段名为port,而非portservice,因此您应该这样做:

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

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

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

答案 1 :(得分:1)

您应该在一个过滤器中写下这两个条件:

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