2009-05-09 6 views
1

У меня есть класс администратора, который использует raw_id_fields. Вместо отображения числового ключа я хотел бы преобразовать его в __unicode__ для соответствующего объекта внешнего ключа.Каков правильный аргумент для ForeignKeyRawIdWidget?

Я думал, что способ сделать это - добавить форму в класс администратора. Эта форма будет той, в которой поле, которое я хочу изменить, переопределяется моим собственным виджетами.

В качестве промежуточного шага я просто хочу дублировать существующее поведение - поэтому поле необработанного идентификатора будет отображаться со своим соседним значком. У меня есть форма с виджетами ForeignKeyRawIdWidget. Этот виджет нуждается в аргументе, хотя я не знаю, что ему дать. Например, я пробовал ForeignKeyRawIdWidget(DBObjectName.objects.get(pk=53)), но я получаю ошибку. Объект DBObjectName не имеет атрибута 'to'.

Из своего определения в related.py видно, что виджет нуждается в аргументе, но я не знаю, что он ищет.

+0

Теперь я думаю, что правильный способ сделать это - определить виджет, который является подклассом Select и переопределить метод визуализации. – Mitch

ответ

0

Он ищет аргумент в форме Class._meta.get_field('field to link').rel.

Например, у меня есть класс под названием «Фотография», чье поле изображения является ForeignKey для другого класса, и я хочу, чтобы виджет ForeignKey выглядел другим. Аргумент, который требуется ForeignKeyRawIDWidget для rel, - Photo._meta.get_field('image').rel.

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