2014-05-16 1 views
0

, 내가 쓴 아주 기본적인 일FeinCMS 확장에 미디어 추가 내가 feincms에 새로운 확장을 작성하려고 해요

from __future__ import absolute_import, unicode_literals 

from django.db import models 
from django.utils.translation import ugettext_lazy as _ 

from feincms import extensions 


class Extension(extensions.Extension): 
    def handle_model(self): 
     self.model.add_to_class('excerpt', models.TextField(
      _('excerpt'), 
      blank=True, 
      help_text=_('Excerpts are good!'))) 

    def handle_modeladmin(self, modeladmin): 
     modeladmin.add_extension_options(_('Exceprt'), { 
      'fields': ('excerpt',), 
      'classes': ('collapse',), 
     }) 

텍스트 필드 발췌을 추가 할 수 있지만, 지금은 하나를 조금 쓰고 싶어 더 복잡한. 한 지역의 미디어를 선택하는 것과 비슷한 프로세스를 사용하여 하나의 추천 이미지를 페이지에 추가 할 수있게하고 싶지만이 문제를 해결하는 방법은 없습니다. 이 확장을 가진 모든 지침을 주시면 감사하겠습니다!

감사합니다.

답변

1

질문을 올바르게 이해했는지는 확실하지 않지만 어쩌면 도움이 될 것입니다. https://github.com/matthiask/feincms-in-a-box/blob/master/box/cms/models.py#L57 - MediaFileForeignKey를 추가하고 raw_id_fields에 새 필드를 추가하기 만하면됩니다. 그것은 모두가되어야합니다.

예제 코드는 다음과 같습니다

from __future__ import absolute_import, unicode_literals 

from django.db import models 
from django.utils.translation import ugettext_lazy as _ 

from feincms.module.page.models import Page 
from feincms.extensions import Extension 
from feincms.module.medialibrary.fields import MediaFileForeignKey 
from feincms.module.medialibrary.models import MediaFile 

class ExcerptExtension(Extension): 
    def handle_model(self): 
     self.model.add_to_class(
      'excerpt_image', 
      MediaFileForeignKey(
       MediaFile, verbose_name=_('image'), 
       blank=True, null=True, related_name='+')) 
     self.model.add_to_class(
      'excerpt_text', 
      models.TextField(_('text'), blank=True)) 

    def handle_modeladmin(self, modeladmin): 
     modeladmin.raw_id_fields.append('excerpt_image') 
     modeladmin.add_extension_options(_('Excerpt'), { 
      'fields': ('excerpt_image', 'excerpt_text'), 
     }) 


Page.register_extensions(
    ExcerptExtension, 
) 

: FeinCMS의 최신 버전-그대로 작업이 코드가 필요합니다. 좀 더 정확히 말하자면 버전 1.9 이상에서만 확장 클래스 (점으로 구분 된 파이썬 경로 대신)를 Page.register_extensions에 직접 전달할 수 있습니다.