额外的数据添加到选择在Django管理
问题描述:
我有类似如下:额外的数据添加到选择在Django管理
class Destination(models.Model):
name = models.CharField
picture = models.ImageField
def __unicode__(self):
return u"%s" % self.name
class Vacation(models.Model):
destination = models.ForeignKey(Destination)
当建立在我的Django管理界面,模型,我想我的目的地被显示为单选按钮目的地名称和目的地图片。
我使用这样显示与目的地名称单选按钮自定义模板add_form是没有问题的,但是包括画面是困难的。
我想离开__unicode__(self)
原来的样子,我只需要在该管理视图中的对象返回的图片。另外我不想将对象内联。
有关如何做到这一点的任何建议(包括如何将其纳入模板)将是伟大的!
编辑:This SO post非常接近我所需要的,但我想访问个人选择数据,而不是从修改后的标签解析它。
答
这不是一个特定于管理员的答案,但我认为它应该可以在管理员中使用,如果您可以为表单使用自定义模板。
你可以做一个修改控件(可能是因为现有的Django控件的子类),即发送额外的字段从模型到一个自定义的widget模板。
您也可以手动呈现形式在它的显示的模板,并作出获取使用你的目标对象,这是作为选项的值传递的ID任何额外信息包含标签。
例如:
your_template.html
{% load destinations %}
{% for opt in form.destination %}
{{ opt.tag }}
{% destination opt.data.value %}
{% endfor %}
destinations.py(在your_app/templatetags)
from django import template
from your_app.models import Destination
register = template.Library()
@register.inclusion_tag('your_app/destination-option.html')
def destination(id):
destination=Destination.objects.filter(id=int(id)).first()
return {'destination':destination}
目的地option.html
<!-- any formatting you prefer -->
{{destination.title}}
<img src="{{destination.picture.image_url}}">