Django: ¿Es razonable usar objetos como claves de diccionario?

¿Es razonable usar objetos como claves de un diccionario en django? Lo he hecho y funciona. Pero me pregunto si esta es la mejor práctica o si va a crear dificultades que no preveo en este momento.

Estoy trabajando en un proyecto que se ocupa de los estándares educativos. Tengo diccionarios con una estructura a lo largo de las líneas de {Subject:[Standards]} . El modelo para el sujeto se ve algo así como:

 class Subject(models.Model): subject = models.CharField(max_length=255, unique=True) def __unicode__(self): return self.subject 

¿Es correcto usar los objetos de este modelo como claves para mis diccionarios, o debo usar una representación de cadena, como Subject.subject en su lugar?

Si es así, ¿el método Unicode afecta esto? Cuando intenté usar Subject.subject como la clave, obtuve cosas como {u'Math': []} Usando objetos como claves, se parece a {: []}

Este es un seguimiento de una pregunta que hice ayer sobre el uso de Ninguno como clave de diccionario .

Los objetos mutables no deberían usarse como claves de diccionario. Dicho esto, esto funciona porque la clase del modelo base define __hash__ en términos de la clave principal del modelo, que es poco probable que cambie. Pero preferiría usar el pk directamente como la clave.

Depende de cómo quieras usarlos. Sin embargo, sugeriría un enfoque más simple:

Las claves de los diccionarios podrían ser la clave principal del modelo.

Suponiendo que los objetos implementen una buena función hash, diría que no hay nada de malo en usar objetos como claves, pero esa es solo mi opinión personal.

Sería mejor usar la representación de cadenas ya que, cuando tenga que hacer búsquedas, deberá escribir todas esas cosas, lo que será una molestia, además, si en el futuro desea cambiar su representación de Unicode, tendrá que: Encuentra una forma de reescribir el antiguo Unicode para hacer búsquedas.

Buena suerte.