我有一个字典定义为
BREED_CLASS = {
'bdcl': ['Border Collie', BreedBdcl, 'BreedBdcl'],
}
和定义为
的模型class Dog(models.Model):
breed_code = models.CharField(max_length=4, default='')
我正在尝试使用breed_code作为键来访问字典中的项目,例如像
return BREED_CLASS[instance.breed_code][0]
但是会引发KeyError,异常值''也就是默认值。
我尝试过像
这样的事情bc = instance.breed_code
并正确返回保存到该实例化对象('bdcl')的值。但是当我把它放入字典访问时就这样了
return BREED_CLASS[bc][0]
它使我获得了具有相同确切异常值的完全相同的KeyError。我怎么知道这个?
答案 0 :(得分:0)
CharField类似乎使用__str__
魔术方法在打印时返回一个字符串,给你一个错觉,它是一个字符串但它实际上是一个对象。您的字典使用实际字符串来存储值,但是当您使用BREED_CLASS[instance.breed_code]
时,您将传递对象。将对象转换为字符串应该修复它。试试这个:
BREED_CLASS[str(instance.breed_code)][0]
答案 1 :(得分:0)
所以我想出了一个解决方法,让我得到了我想要的东西,但我不知道它为什么会起作用。
这本身不起作用
(mask & (1 << bitIndex)) != 0
但是这个for循环遍历了密钥
return BREED_CLASS[instance.breed_code][2]
请注意,两个返回调用都是相同的,其中instance.breed_code用于dict键索引。 有没有人对这是为什么有答案?