与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
以下是更多阅读的建议