Иногда я просто поражаюсь, как некоторые простые вещи приходится делать сложно. Опыт работы с C# в целом и ASP.NET в частности нередко мешают при использовании связки Python + Django. Все-таки скриптовый язык - отличается от строготипизированного не только синтаксисом. Тут нужно мыслить по-другому.
Возьму для наглядности такой пример: есть какая-то абстрактная модель, которая хранит в себе данные о первых трех местах какого-либо соревнования и нужно быстро сделать минимальный интерфейс для ввода и отображения данных. Пример, конечно, надуманный и делается легко и на ASP.NET WebForms/MVC, но, меня поразила такое свойство моделей в Django, как “choices field”.
Решение настолько простое и понятное, что это привело меня в полный восторг. Нет никаких таблиц-словарей, связей между таблицами, foreign keys и т.д. Только несколько строк кода и все. При этом в стандартной django админке все выглядит так же просто и понятно:
Понятно, что такое решение подходит далеко не всегда и только в очень простых случаях, но ведь таких случаев очень много! Не нужно стрелять с пушки по воробьям, а, в случае, когда нужно будет расширить эту модель - choices field легко становится обычным полем с foreign key и практически никак не влияет на работоспособность приложения, в простейшем случае, конечно…