2010-07-20 3 views
0

Одна из моих моделей имеет поле «статус», которое только модифицируется в коде. Это целое число от 1 до 6 (хотя это может измениться и в будущем).Отображать пользовательские метки для значений в Django Admin Site

Однако на сайте администратора я хотел бы показать ярлык для этих данных. Итак, вместо отображения «5» я хотел бы сказать «Ошибка». Это означает, что я мог бы легко фильтровать объекты в базе данных с статусом «Ошибка», а также мои коллеги, которые не знают, что означает каждый статус, поскольку они не участвуют в кодировании, могут полностью использовать сайт администратора ,

Я не знаю, правильно ли я поступил по этому поводу или если это возможно, но я был бы признателен за любую помощь, которую вы можете дать. Я бы предпочел не изменять способ сохранения статуса, поскольку для этого потребуется большая перезапись некоторых частей нашей системы. Оглядываясь назад, я думаю, что это был плохой способ сделать это, но я не думал, что поле будет иметь значение так же, как и оно.

+1

Если используется параметр выбора для поля, метка показывает автоматически: HTTP: // UR1 .ca/0s2xf –

ответ

4

Учитывать использовать choices. В любом случае вы можете настроить множество вещей в Джанго-администратора, просто читать документы:

http://docs.djangoproject.com/en/1.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display

http://docs.djangoproject.com/en/1.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form

+0

Я забыл, что элементы, перечисленные в «list_display», могут быть функциями как в модели, так и в полях. Теперь я добавил правильный дисплей. Однако, похоже, что «list_filter» должен иметь поле и не может использовать функцию. – danpalmer

+0

Я проверил документацию и, как я подозревал, у нее должны быть поля, и она поддерживает только некоторые типы. К сожалению, поиск не поддерживает даже функции. – danpalmer

+0

Вот почему вы должны были использовать выбор в первую очередь. Вам действительно нужно попробовать. (В крайнем случае см. Http://stackoverflow.com/questions/991926/custom-filter-in-django-admin) –

0

Вы можете создать пользовательский тип поля, который переопределяет to_python и get_prep_value для хранения целых чисел в БД, но использовать строковые значения в Python:

http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.django.db.models.Field

+0

Это похоже на возможность, но это все равно означает переписывание большого количества кода, который знает номера. В идеале, я хочу, чтобы они все еще были числами везде, кроме сайта Admin. Я думал, что это может быть похоже на добавление читаемого человеком ярлыка на сайт Admin. – danpalmer

+0

Код, который имеет дело с номерами магического статуса, плохо пахнет. –

+0

Но это намного приятнее, чище, быстрее, код за 90% времени. Это просто, когда вы добираетесь до этого, что это раздражает. Я думаю, что в Ruby у вас есть символы, которые обычно используются для такого рода вещей. – danpalmer

Смежные вопросы