Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 11, 2013 22:34:13

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

редактирование change_form админки

Собственно задача такова: необходимо немного переопределить темплейт админки для одной из моделей. Собственно, темплейт - change_form.html. Проблема в том, что нужно получить доступ к методу экземпляра модели.

class MyTable(models.Model):
title = models.CharField(max_length=255, verbose_name=_("Title"))
slug = models.SlugField(max_length=255, verbose_name=_("Slug"))
content = models.TextField(blank=True, default="",
verbose_name=_("Content"))

class Meta:
verbose_name = _("My Table")
verbose_name_plural = _("My Table")

def my_super_method(self):
return u'super method %s' % self.slug

{% extends "admin/change_form.html" %}

{% block object-tools-items %}
<li><a href="history/">{% trans "History" %}</a></li>
<li><a href="{{ object.my_super_method }}/" class=class="grp-state-focus" target="_blank">{% trans "My super button" %}</a></li>
{% endblock %}

Проблема в том, что конечно же {{ object.super_method }} не работает. Пытаюсь найти в исходниках как получить доступ к объекту и его методам, но пока не получается. Может кто уже сталкивался? Подскажите, плиз.



Отредактировано Dr.Livsi (Фев. 11, 2013 22:34:54)

Офлайн

#2 Фев. 11, 2013 23:11:54

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

редактирование change_form админки

в общем задачу решил создав свой тэг:
{% new_tag object_id %}



Офлайн

#3 Фев. 12, 2013 05:32:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

редактирование change_form админки

Ваш метод не принимает параметров, поэтому ничто не мешает Вам сделать из него свойство.

@property
def my_super_method(self):
        return u'super method %s' % self.slug

Теперь в шаблоне можете использовать это свойство, это будет работать

 <li><a href="{{ object.my_super_method }}/" class=class="grp-state-focus" target="_blank">{% trans "My super button" %}</a></li>



Офлайн

#4 Фев. 12, 2013 09:05:07

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

редактирование change_form админки

Спасибо, буду пробовать.
Нет, не получается. Здесь сам объект object не доступен в контексте шаблона.
В контексте доступны object_id, content_type_id



Отредактировано Dr.Livsi (Фев. 12, 2013 09:33:05)

Офлайн

#5 Фев. 12, 2013 12:07:01

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

редактирование change_form админки

поробуйте через {{ form.instance.my_super_method }}

Офлайн

#6 Фев. 12, 2013 17:08:31

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

редактирование change_form админки

inoks
поробуйте через {{ form.instance.my_super_method }}
нет, так тоже не получается :(



Офлайн

#7 Фев. 12, 2013 23:22:30

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

редактирование change_form админки

а как к форме обращались?
посмотрите в admin/change_form.html как форма редактирования объекта называется

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version