Is it reasonable to use objects as keys to a dictionary in django? I have done so and it works. But I am wondering if this is best practice, or if it is going to make difficulties I don't foresee right now.
I am working on a project which deals with educational standards. I have dictionaries with a structure along the lines of {Subject:[Standards]}
. The model for subject looks something like:
class Subject(models.Model):
subject = models.CharField(max_length=255, unique=True)
def __unicode__(self):
return self.subject
Is it okay to use the objects from this model as keys to my dictionaries, or should I be using a string represenation, such as Subject.subject instead?
If so, does the unicode method affect this? When I tried using Subject.subject as the key, I got things like {u'Math': [<Subject: Students can perform calculations.>]}
Using objects as keys, it looks like {<Subject: Math>: [<Standard: Students can perform calculations.>]}
This is a followup to a question I asked yesterday about using None as a dictionary key.
Mutable objects shouldn't really be used as dictionary keys. That said, this works because the base model class defines __hash__
in terms of the model's primary key, which is unlikely to change. But I would prefer to use the pk directly as the key.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With