Это не красиво, но вы можете изменить поиск с помощью мета-атрибута моделей:
class Days(models.Model)
name = models.CharField(max_length=3, choices=(
('sat', "Saturday"),
('sun', "Sunday"),
('mon', "Monday"),
('tue', "Tuesday"),
('wed', "Wednesday"),
('thu', "Thursday"),
('fri', "Friday"),
), null=False, blank=False, primary_key=True)
@classmethod
def human_name_to_choice(cls, human_readable_str):
return {b: a for a, b in cls._meta.get_field('name').choices}.get(human_readable_str, 'NUL')
# ...
Days.objects.get(name=Days.human_name_to_choice('Saturday'))
Вы можете изменить его так, чтобы он не учитывал регистр (чтобы он работал в вашем примере)
Но будьте осторожны:
- Строки, читаемые человеком, не должны быть уникальными!
- Если строка, читаемая человеком, не может быть найдена в выборках, она возвращает пустышку ('NUL') - но это можно добавить позже и привести к путанице