Как добавить ссылку на выбранные элементы django-autocomplete-light?

Новый Би здесь. Я успешно установил django-autocomplete-light на свой django-admin v1.4.

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

Цель создания ссылки — открыть всплывающее окно для редактирования выбранных записей.

Заранее благодарю за любой совет


person Charlesliam    schedule 13.11.2013    source источник
comment
Подобная проблема уже поднималась здесь.   -  person Charlesliam    schedule 14.11.2013


Ответы (1)


Вы должны добавить это '?_popup=1" target="_blank" onclick="return showAddAnotherPopup(this);' на ваш URL.

Вот полное решение.

`класс EditModelBase(autocomplete_light.AutocompleteModelBase):

choice_html_format = u'''
    <span class="div" data-value="%s">%s</span>
    <a href="%s" title="%s"><img src="%s%s" /></a>
'''

def choice_html(self, choice):
    """
    Return a choice formated according to self.choice_html_format.
    """
    choice_format = u'''<span class="div" data-value="%s">%s</span>'''
    if not choice.get_absolute_update_url():
        return choice_format
    return self.choice_html_format % (
        self.choice_value(choice), self.choice_label(choice),
        choice.get_absolute_update_url(), _(u'Update'),
        settings.STATIC_URL, 'admin/img/icon_changelink.gif')`

А также:

def get_absolute_update_url(self):
    url = reverse('admin:ccad_carrier_change', args=(self.id,))
    url = '%s?_popup=1" target="_blank" onclick="return showAddAnotherPopup(this);' % url
    return url

Надеюсь это работает.

person juanpimentel    schedule 14.11.2013
comment
Выдает эту ошибку Exception Type: AttributeError Exception Value: 'Carrier' object has no attribute 'get_absolute_update_url' - person Charlesliam; 14.11.2013
comment
эта часть действительно не имеет близкой двойной кавычки? onclick="return showAddAnotherPopup(this);' - person Charlesliam; 14.11.2013
comment
Когда я следую этому You have to add this '?_popup=1" target="_blank" onclick="return showAddAnotherPopup(this);' to your url., код работает. Но когда я попробовал ваш подкласс, появляется ошибка, которую я написал выше. В целом это работает. Ваш ответ действительно полезен. У пользователей будет возможность увидеть подробности во всплывающем окне без перенаправления. Спасибо. Если у читателей есть другой способ решить это, я с удовольствием проголосую за вас. - person Charlesliam; 14.11.2013