问题描述
我有三个这样的模型:
class Corredor (models.Model):
dorsal=models.IntegerField(primary_key=True)
tipo=models.CharField(max_length=50)
nombre=models.CharField(max_length=50)
f_nacimiento=models.DateField(default=1/1/1975)
nacimiento=models.IntegerField()
categoria=models.CharField(max_length=50)
pais=models.CharField(max_length=50)
equipo=models.CharField(max_length=50)
nombre_equipo=models.CharField(max_length=50)
lid=models.BooleanField()
gre=models.BooleanField()
jor=models.BooleanField()
giro=models.BooleanField()
tour=models.BooleanField()
vuelta=models.BooleanField()
abandono_giro=models.IntegerField(default=0)
etapa_aban_giro=models.IntegerField(default=0)
abandono_tour=models.IntegerField(default=0)
etapa_aban_tour=models.IntegerField(default=0)
abandono_vuelta=models.IntegerField(default=0)
etapa_aban_vuelta=models.IntegerField(default=0)
class Meta:
ordering=['nombre']
def __str__(self):
return self.nombre
class Equipo (models.Model):
alias=models.CharField(max_length=50,primary_key=True)
lid1=models.ForeignKey(Corredor,limit_choices_to={'lid':True,'giro':True,'tipo': "Rider"},related_name="lid1",on_delete=models.CASCADE)
lid2=models.ForeignKey(Corredor,related_name="lid2",on_delete=models.CASCADE)
lid3=models.ForeignKey(Corredor,related_name="lid3",on_delete=models.CASCADE)
lid4=models.ForeignKey(Corredor,related_name="lid4",on_delete=models.CASCADE)
gre1=models.ForeignKey(Corredor,limit_choices_to={'gre':True,related_name="gre1",on_delete=models.CASCADE)
gre2=models.ForeignKey(Corredor,related_name="gre2",on_delete=models.CASCADE)
gre3=models.ForeignKey(Corredor,related_name="gre3",on_delete=models.CASCADE)
jlg1=models.ForeignKey(Corredor,limit_choices_to={'jor':True,related_name="jlg1",on_delete=models.CASCADE)
jlg2=models.ForeignKey(Corredor,related_name="jlg2",on_delete=models.CASCADE)
lid_sup=models.ForeignKey(Corredor,related_name="lid_sup",on_delete=models.CASCADE)
gre_sup=models.ForeignKey(Corredor,related_name="gre_sup",on_delete=models.CASCADE)
jlg_sup=models.ForeignKey(Corredor,related_name="jlg_sup",on_delete=models.CASCADE)
ganador_e1=models.ForeignKey(Corredor,limit_choices_to={'giro':True,related_name="ganador_e1",on_delete=models.CASCADE)
ganador_e2=models.ForeignKey(Corredor,related_name="ganador_e2",on_delete=models.CASCADE)
ganador_e3=models.ForeignKey(Corredor,related_name="ganador_e3",on_delete=models.CASCADE)
ganador_e4=models.ForeignKey(Corredor,related_name="ganador_e4",on_delete=models.CASCADE)
ganador_e5=models.ForeignKey(Corredor,related_name="ganador_e5",on_delete=models.CASCADE)
ganador_e6=models.ForeignKey(Corredor,related_name="ganador_e6",on_delete=models.CASCADE)
ganador_e7=models.ForeignKey(Corredor,related_name="ganador_e7",on_delete=models.CASCADE)
ganador_e8=models.ForeignKey(Corredor,related_name="ganador_e8",on_delete=models.CASCADE)
ganador_e9=models.ForeignKey(Corredor,related_name="ganador_e9",on_delete=models.CASCADE)
ganador_e10=models.ForeignKey(Corredor,related_name="ganador_e10",on_delete=models.CASCADE)
ganador_e11=models.ForeignKey(Corredor,related_name="ganador_e11",on_delete=models.CASCADE)
ganador_e12=models.ForeignKey(Corredor,related_name="ganador_e12",on_delete=models.CASCADE)
ganador_e13=models.ForeignKey(Corredor,related_name="ganador_e13",on_delete=models.CASCADE)
ganador_e14=models.ForeignKey(Corredor,related_name="ganador_e14",on_delete=models.CASCADE)
ganador_e15=models.ForeignKey(Corredor,related_name="ganador_e15",on_delete=models.CASCADE)
ganador_e16=models.ForeignKey(Corredor,related_name="ganador_e16",on_delete=models.CASCADE)
ganador_e17=models.ForeignKey(Corredor,related_name="ganador_e17",on_delete=models.CASCADE)
ganador_e18=models.ForeignKey(Corredor,related_name="ganador_e18",on_delete=models.CASCADE)
ganador_e19=models.ForeignKey(Corredor,related_name="ganador_e19",on_delete=models.CASCADE)
ganador_e20=models.ForeignKey(Corredor,related_name="ganador_e20",on_delete=models.CASCADE)
ganador_e21=models.ForeignKey(Corredor,related_name="ganador_e21",on_delete=models.CASCADE)
ganador_tour=models.ForeignKey(Corredor,related_name="maillot_amarillo",on_delete=models.CASCADE)
segundo_tour=models.ForeignKey(Corredor,related_name="segundo",on_delete=models.CASCADE)
tercero_tour=models.ForeignKey(Corredor,related_name="tercero",on_delete=models.CASCADE)
cuarto_tour=models.ForeignKey(Corredor,related_name="cuarto",on_delete=models.CASCADE)
quinto_tour=models.ForeignKey(Corredor,related_name="quinto",on_delete=models.CASCADE)
sexto_tour=models.ForeignKey(Corredor,related_name="sexto",on_delete=models.CASCADE)
mv=models.ForeignKey(Corredor,related_name="maillot_verde",on_delete=models.CASCADE)
mpr=models.ForeignKey(Corredor,related_name="maillot_puntos_rojos",on_delete=models.CASCADE)
mb=models.ForeignKey(Corredor,'nacimiento__gte': 1996},related_name="maillot_blanco",on_delete=models.CASCADE)
sc=models.ForeignKey(Corredor,related_name="supercombativo",on_delete=models.CASCADE)
me=models.ForeignKey(Corredor,'tipo': "Team"},related_name="mejor_equipo",on_delete=models.CASCADE)
owner=models.ForeignKey(User,on_delete=models.CASCADE)
created=models.DateTimeField(auto_Now_add=True)
def __str__(self):
return self.alias
class Puntuacion (models.Model):
competicion=models.CharField(max_length=50)
temporada=models.IntegerField()
etapa=models.IntegerField()
modalidad=models.CharField(max_length=50)
dorsal=models.ForeignKey(Corredor,blank=True,null=True,related_name="puntos",on_delete=models.CASCADE)
categoria=models.CharField(max_length=50)
descripcion=models.CharField(max_length=150)
puntos=models.IntegerField()
def __str__(self):
return self.categoria
在 Puntuacion 中,背侧可以有不同类别的 puntos,也可能没有任何 puntos。 目标是,在 Equipo 模型中,对于每个 Alias,都有不同领域(lid1、lid2、lid2、........gre1、gre2、. ....).
我是 Django 新手,我认为使用 annotate 是一种选择,但我不知道如何进行查询。
感谢任何能帮助我的人。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)