1

我有以下内容:

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)原样,我只需要在此管理视图中与对象一起返回的图片。我也不想内联对象。

关于如何做到这一点(包括如何将其合并到模板中)的任何建议都会很棒!

编辑:这篇 SO 帖子非常接近我的需要,但我想访问个人选择数据,而不是从修改后的标签中解析它。

4

1 回答 1

0

这不是特定于管理员的答案,但我认为如果您可以为表单使用自定义模板,它应该可以在管理员中使用。

您可以制作一个修改后的小部件(可能作为现有 Django 小部件的子类),将额外的字段从模型发送到自定义小部件模板。

您还可以在显示表单的模板中手动呈现表单,并制作一个包含标记,该标记使用目标对象的 id 获取任何额外信息,该目标对象的 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}

目的地选项.html

<!-- any formatting you prefer -->
{{destination.title}}
<img src="{{destination.picture.image_url}}">
于 2018-03-04T18:34:40.507 回答