Для работы с внешними ключами и большим количеством значений удобно использовать raw_id_fields - для выбора записи всплывает popup со стандартным listview, в котором легко выбрать нужную запись, так же можно использовать фильтры. Всё в этом варианте хорошо, но не хватает ссылки со страницы редактирования дочерней записи на родительскую, на выбранный объект. Можно написать какой-то хитрый виджет для внешних ключей, а можно и добавить ссылку прямо рядом с полем raw_id. В самом фреймворке такой возможности почему-то не заложено, поэтому добавим её сами. В admin.py вашего приложения добавляем такой monkey patch:

from django.contrib.admin.widgets import ForeignKeyRawIdWidget
from django.core.urlresolvers import reverse
from django.utils.text import truncate_words
from django.utils.html import escape

def url_to_edit_object(obj):
    url = reverse('admin:%s_%s_change' % (obj._meta.app_label, obj._meta.module_name), args=[obj.id])
    return url

def label_for_value(self, value):
    key = self.rel.get_related_field().name
    try:
        obj = self.rel.to._default_manager.using(self.db).get(**{key: value})
        return '&nbsp;<strong><a href="%s">%s</a></strong>' % (
                url_to_edit_object(obj),
                escape(truncate_words(obj, 14))
            )
    except (ValueError, self.rel.to.DoesNotExist):
        return ''

ForeignKeyRawIdWidget.label_for_value = lambda x, y: label_for_value(x, y)

Выглядит как-то так, как и обычный raw_id_field, но со ссылкой: