额外的数据添加到选择在Django管理

额外的数据添加到选择在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}}">