0

@Timmy O'Mahony on How to add some extra fields to the page in django-cms? で示されているように、追加の画像フィールドを作成しました。(django 管理パネル)

私は、reverse_id を使用して別のページからこの画像フィールドを呼び出したいと思います。

{% page_attribute "extended_page_options.image" "my_page_reverse_id" %}

カスタム テンプレート タグは必要ですか? どうすればいいですか?

私はdjango-cms 2.4.3とdjango 1.5.5を使用しています

編集:

models.py

from django.db import models
from django.utils.translation import ugettext_lazy as _
from cms.models.pagemodel import Page
from filer.fields.image import FilerImageField

class ExtendedPage(models.Model):   
    page = models.ForeignKey(Page, unique=True, verbose_name=_("Page"), editable=False, related_name='extended_fields')
    image = FilerImageField(blank=True, null=True)
4

2 に答える 2

1

最近のプロジェクトでは、次のように context_processor でこれを解決したと思います。

from django.conf import settings

def page_extension(request):

    """Puts settings.DEBUG and the page_extension, if present and puts it into
    the context"""

    context = {'debug': settings.DEBUG}

    if request.current_page:
        page = request.current_page

        try:
            context.update({'page_extension': page.page_extension})
        except:
            try:
                context.update({'page_extension': page.publisher_public.page_extension})
            except:
                pass

    return context

この場合、settings.DEBUG の値も追加する機会を利用しました。これはもちろんオプションです。

次に、これを次のように設定ファイルに追加します。

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'path.to.above.code.page_extension',
)

次に、次のステップは、テンプレートの値にアクセスすることです:

{% if page_extension and page_extension.my_page_property %}{{ page_extension.my_page_property }}{% endif %}
于 2014-05-08T13:44:32.167 に答える
0

まず、新しいプロジェクトを開始する場合は、 を選択してくださいdjango cms 3.0。これには、以前のリリースよりも多くの新しくてエキサイティングな機能があります。

質問に戻り、実際の画像フィールドを含むページの詳細設定に移動し、ID を追加します。次に、他のページで次のようにします。

{% page_attribute "field_name" "my_page_reverse_id" %}
于 2014-05-08T11:55:49.740 に答える