2013-03-21 4 views
1

Я использую автогенератор Django для моего проекта. Вот результат:Как изменить виджет по умолчанию в администраторе Django?

Result

В поле «Профессор», Django автоматически раскрывающийся список, но есть, по крайней мере, 1000 элементов в нем. Поэтому я хотел бы заменить список на что-то более удобное для пользователя, например, на виджет, используемый для «Рефери», где вы просто просто набираете первые буквы имени, а элементы отображаются ниже.

Как я могу изменить файлы admin.py или models.py, чтобы получить этот результат?

ответ

2

Вы можете попытаться добавить поле в raw_id поля в admin.py:

class YourModelAdmin(admin.ModelAdmin): 
    raw_id_fields=('professor',) 

admin.site.register(YourModel, YourModelAdmin) 

За что вы получите довольно кнопка поиска

+0

Nice! Это не совсем то, что я хотел, но он справляется со своей задачей. Благодарю. – Deneuve

0

вам нужно выбрать только один профессор или много профессоров делать ? Выпадающий список создается, потому что вы используете что-то вроде professor = models.ForeignKey(Professor) в своей модели. ForeignKey подразумевает единственный выбор, но вы, например, виджет, подразумеваете множественный выбор. Поэтому ваше намерение не совсем понятно. В раскрывающемся списке вы также можете выбрать варианты, набрав первые буквы.

+0

На самом деле я просто хочу выбрать одного профессора. – Deneuve

0

Вы ищете:

ModelAdmin.formfield_overrides

Это обеспечивает быстрый и грязный способ переопределить некоторые из Field вариантов для использования в админ. formfield_overrides - это словарь, сопоставляющий класс поля с аргументом аргументов, чтобы перейти к полю во время построения.

Посмотрите на этот пример:

from django.db import models 
from django.contrib import admin 

# Import our custom widget and our model from where they're defined 
from myapp.widgets import RichTextEditorWidget 
from myapp.models import MyModel 

class MyModelAdmin(admin.ModelAdmin): 
    formfield_overrides = { 
     models.TextField: {'widget': RichTextEditorWidget}, 
    } 
Смежные вопросы