在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: Students can perform calculations.>]}这样的结果。使用对象作为键,看起来像这样{<Subject: Math>: [<Standard: Students can perform calculations.>]}
这是昨天我提出的关于将None用作字典键的问题的后续。
def __hash__(self): return self.id
一样简单?如果是这样,为什么需要明确说明呢?或者你的意思是我应该将我的字典定义为{subject.id:[standard.id]}
吗? - japhyr