У меня есть 20-байтовый шестнадцатеричный хеш, который я хотел бы сохранить в модели django.
Если я использую текстовое поле, оно интерпретируется как юникод и возвращается искаженным.
В настоящее время я его кодирую и декодирую, что действительно загромождает код,
потому что я должен быть в состоянии фильтровать по нему.
def get_changeset(self):
return bin(self._changeset)
def set_changeset(self, value):
self._changeset = hex(value)
changeset = property(get_changeset, set_changeset)
Вот пример фильтрации
Change.objects.get(_changeset=hex(ctx.node()))
Это подход, который был рекомендован разработчиком django, но я действительно изо всех сил пытаюсь смириться с тем фактом, что просто уродливо хранить двадцать байтов.
Может быть, я слишком большой пурист, но в идеале я мог бы написать
Change.objects.get(changeset=ctx.node())
Свойства позволяют мне написать:
change.changeset = ctx.node()
Так что это так хорошо, как я могу просить.