Форум сайта python.su
0
Необходимо вставить картинку для поля-изображения в админке.
Есть таблицы “Товар” и “Изображения товара”
Добавление/редактирование/удаление изображений осуществляется в форме Товара через StackedInline.
Сейчас это выглядит так:
Я пошел по пути изменения шаблона для редактирования модели.
Вот кусок кода, переопределенного файла fieldset.html, то место, где выводятся поля формы редактирования:
...
{% for field in line %}
<div{% if not line.fields|length_is:"1" %} class="field-box"{% endif %}>
{% if field.is_checkbox %}
{{ field.field }}{{ field.label_tag }}
{% else %}
{{ field.label_tag }}
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
{{ field.field }}
{% endif %}
{% ifequal field.field.name 'img' %} ****** {% endifequal %}
{% endif %}
{% if field.field.field.help_text %}
<p class="help">{{ field.field.field.help_text|safe }}</p>
{% endif %}
</div>
{% endfor %}
...
Офлайн
0
Решил задачу немного по другому, вот здесь есть описание:
http://djangosnippets.org/snippets/1580/
У себя сделал следующее…добавил в admin.py для модели:
1. код из снипсета, исправил только имя поля изображения на свое, и высоту превьюхи
from django import forms
from django.utils.safestring import mark_safe
class AdminImageWidget(forms.FileInput):
"""
A ImageField Widget for admin that shows a thumbnail.
"""
def __init__(self, attrs={}):
super(AdminImageWidget, self).__init__(attrs)
def render(self, name, value, attrs=None):
output = []
if value and hasattr(value, "url"):
output.append(('<a target="_blank" href="%s">'
'<img src="%s" style="height: 60px;" /></a> '
% (value.url, value.url)))
output.append(super(AdminImageWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))
class IconForm(forms.ModelForm):
img = forms.ImageField(label='Изображение', widget=AdminImageWidget)
class ImageForElementInline(admin.StackedInline):
model = ImageForElement
extra = 0
form = IconForm

Отредактировано (Янв. 6, 2011 03:17:46)
Офлайн