在
django中使用对象作为字典的键是否合理?我这样做了,它的确有效.但我想知道这是不是最好的做法,或者是否会造成我现在还没有预见到的困难.
我正在研究一个处理教育标准的项目.我的字典结构与{Subject:[Standards]}一致.主题的模型看起来像:
class Subject(models.Model): subject = models.CharField(max_length=255,unique=True) def __unicode__(self): return self.subject
是否可以使用此模型中的对象作为我的词典的键,或者我应该使用字符串表示,例如Subject.subject?
如果是这样,unicode方法会影响这个吗?当我尝试使用Subject.subject作为键时,我得到的内容类似于{u’Math’:[< Subject:学生可以执行计算.>]}使用对象作为键,它看起来像{< Subject:Math> :[<标准:学生可以执行计算.>]}
这是我昨天提到的关于using None as a dictionary key的问题的后续跟进.
解决方法
可变对象不应该真正用作字典键.也就是说,这是有效的,因为基础模型类根据模型的主键定义__hash__,这不太可能改变.但我更愿意直接使用pk作为关键.