Форум сайта python.su
Собственно задача такова: необходимо немного переопределить темплейт админки для одной из моделей. Собственно, темплейт - 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 %}
Отредактировано Dr.Livsi (Фев. 11, 2013 22:34:54)
Офлайн
в общем задачу решил создав свой тэг:
{% new_tag object_id %}
Офлайн
Ваш метод не принимает параметров, поэтому ничто не мешает Вам сделать из него свойство.
@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>
Офлайн
Спасибо, буду пробовать.
Нет, не получается. Здесь сам объект object не доступен в контексте шаблона.
В контексте доступны object_id, content_type_id
Отредактировано Dr.Livsi (Фев. 12, 2013 09:33:05)
Офлайн
поробуйте через {{ form.instance.my_super_method }}
Офлайн
inoksнет, так тоже не получается :(
поробуйте через {{ form.instance.my_super_method }}
Офлайн
а как к форме обращались?
посмотрите в admin/change_form.html как форма редактирования объекта называется
Офлайн