与django框架的左连接

与django框架的左连接,django,left-join,django-select-related,Django,Left Join,Django Select Related,我有这些模型: class PartidosFifa(models.Model): Partido = models.IntegerField(max_length=11, default=0) PaisL = models.CharField(max_length=250) Local = models.IntegerField(max_length=11, default=0) Visita = models.IntegerField(max_length=1

我有这些模型:

class PartidosFifa(models.Model):
    Partido = models.IntegerField(max_length=11, default=0)
    PaisL = models.CharField(max_length=250)
    Local = models.IntegerField(max_length=11, default=0)
    Visita = models.IntegerField(max_length=11, default=0)
    PaisV = models.CharField(max_length=250)
    Resultado = models.CharField(max_length=250, default="No jugado")
    Fecha = models.DateField()
    Estadio = models.CharField(max_length=500)
    Jugado = models.CharField(max_length=5, default="No")
    def __unicode__(self):
        return unicode(self.Partido)

class PartidosUsuarios(models.Model):
    idUsuario = models.ForeignKey(User)
    idFifa = models.ForeignKey(PartidosFifa)
    idPartido = models.CharField(max_length=20)
    UPaisL = models.CharField(max_length=250)
    ULocal = models.IntegerField(max_length=11, default=0)
    UVisita = models.IntegerField(max_length=11, default=0)
    UPaisV = models.CharField(max_length=250)
    UResultado = models.CharField(max_length=250)
    Puntos = models.IntegerField(max_length=11, default=0)
    Capturado = models.CharField(max_length=10, default="No")
    def __unicode__(self):
        return unicode(self.idPartido)
我需要让partidosFifa表显示所有记录,并显示partidosUsuarios表上的结果,但该表中可能有记录,也可能没有记录。在sql中,类似于:

从PartidosFifa中选择PartidosFifa.PaisL、PartidosFifa.PartidosFifaV、PartidOSUsarios.ULocal、PartidOSUsarios.UVista在PartidosFifa上加入PartidOSUsarios。Partido=PartidOSUsarios.idFifa


如何使用django框架编写连接?

使用django ORM,实际上不会编写连接。您可以帮助它确定最有效的查询,在这种情况下,您希望使用
prefetch\u related
,如下所示

partidos_fifa_set = PartidosFifa.objects.prefetch_related('partidosusuarios_set')
这将为每个
PartidosFifa
记录获取所有记录
PartidosUsuarios
。要访问它,请按如下方式循环:

for partidos_fifa in partidos_fifa_set:
    for partidos_usuarios in partidos_fifa.partidos_usuarios_set.all():
        # Do something with partidos_usuarios
        pass
以下是更多阅读的建议