1

I have these models:

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)

I need to make partidosFifa table show all the records that have and show the results that you have on the table partidosUsuarios but may or may not have records in this table. in sql would be something like:

Select PartidosFifa.PaisL, PartidosFifa.PartidosFifaV, PartidosUsuarios.ULocal, PartidosUsuarios.UVista FROM PartidosFifaLEFT JOIN PartidosUsuarios ON PartidosFifa.Partido = PartidosUsuarios.idFifa

How would be written with django framework?

4

1 回答 1

1

使用 Django ORM,您实际上并没有写出连接。您可以帮助它确定最有效的查询,在这种情况下,您希望prefetch_related按如下方式使用。

partidos_fifa_set = PartidosFifa.objects.prefetch_related('partidosusuarios_set')

它的作用是获取PartidosUsuarios每条记录的所有PartidosFifa记录。要访问它,您将遍历它们,如下所示:

for partidos_fifa in partidos_fifa_set:
    for partidos_usuarios in partidos_fifa.partidos_usuarios_set.all():
        # Do something with partidos_usuarios
        pass

这是更多阅读的文档

于 2014-05-14T23:18:18.653 回答