我有一个这样的问题:
asignaturas_equivalencia_alumno = list(Asignaturas_Equivalencia.objects.filter(matricula=inscripcion.usuario.adicional.matricula, origen_de_equivalencia = "SEP").distinct())
然后循环这些索引并打印索引,如果这在列表和模型的属性中:
^{pr2}$结果不同,但是索引,索引总是返回0,输出:
True 0 L1C115
True 0 L1PS101
True 0 L1C116
True 0 L1C118
True 0 L1PS105
True 0 L1PS107
True 0 L1PS109
True 0 L1PS111
True 0 L1C113
True 0 L1C114
True 0 L1C117
True 0 L1PS102
谢谢:)
编辑
模型:
class Asignaturas_Equivalencia(models.Model):
matricula = models.CharField(max_length=10, primary_key=True)
clave_materia = models.CharField(max_length=9)
calificacion = models.CharField(max_length=2)
origen_de_equivalencia = models.CharField(max_length=4)
fecha_registro = models.DateTimeField(auto_now_add=True)
class Meta:
db_table = 'diccionario_equivalencias_materias'
再次编辑
这个问题的唯一解决方法是使用枚举。在
正如其他人正确地提到的,对于有序的iterable成员来说,平等测试可能是脆弱的。但是,如果您想循环使用内容和索引,那么简单地使用enumerate会更容易、更有效。在
检查并再次检查您的主键。在我看来,他们是唯一能把你的平等审查搞砸的东西。在
Django的ORM的
__eq__
方法在两个属于同一类的和具有相同的pk时返回True
。我猜当你有两个带有primary_key = True
的字段时,它会被混淆。它应该抛出一些错误,但可能只是导致未定义的行为。在来自the Django Models documentation:
(重点是我的)
您有不同的项目,如
_as.clave_materia
所示。我想知道这个类定义是什么样子的。在也许您编写了自己的
__eq__
方法,或者类似的方法。如果您这样做了,它可能是有缺陷的,并且总是为对象列表的第一个元素返回True
。听起来像是一种解释吗?在类似这样(IPython会话):
相关问题 更多 >
编程相关推荐