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 を使用して追加情報を取得する包含タグを作成することもできます。

例えば:

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 に答える