Форум сайта python.su
Суть проблемы в следующем:
1. Есть model_1 для которой задана сортировка по наименованию (Meta.ordering=).
2. Есть model_2, которая ссылается на model_1 (имеет поле “model_1 = ForeignKey(model_1)”).
3. При заполнении в админке поля model_1 для экземпляра model_2, хтмл-селект поля model_1 отсортирован по id.
Необходимо, чтобы список возможных значений внешнего ключа был отсортирован по model.Meta.ordering!
Поигрался с сортировкой ModelAdmin.ordering - пустой номер, сортировка в хтмл-селекте остается по идентификатору.
ВАЖНОЕ ДОПОЛНЕНИЕ: модель model_1 наследует от абстрактной модели model_0, а сортировка Meta.ordering= задана именно для родителя и не переопределяется в наследнике!
Проблема решается созданием дефолтного менеджера для модели, который отсортирован по нужному полю.
Посмотрел обсуждение проблемы в code.djangoproject.com, в groups.google.com и т.д. - там вопросы о сортировке хтмл-селекта согласно Meta.ordering мгновенно переводятся с статус closed без объяснений.
В документации так же есть явные указания на необходимость создания Automatic Manager и use_for_related_fields = True.
Посмотрел, как можно поправить джангу для того, чтобы она поддерживала нужное мне поведение.
Более того, считаю такое поведение самым верным - люди в основной своей массе работают со списками названий, а не идентификаторов, и приходится делать много лишних телодвижений.
Прежде чем открывать новый тикет и размещать патч, хотел обсудить необходимость сортировки хтмл-селекта по полю внешнего ключа в админке согласно model.Meta.ordering.
ДОПОЛНЕНИЕ: открывать тикет таким образом надо для наследования моделей.
Отредактировано (Ноя. 23, 2009 16:03:46)
Офлайн