2017-11-09 6 views
0

내가 정말로 두꺼운 지 잘 모르겠지만이 패널을 찾으려고 고심하고있다. list of available panels. 처음에 나는 그것이 PageChooserPanel이라고 생각했지만 그렇지 않았습니다. 이것은 내가 무엇을 찾고 있습니다 다음 RichTextField에 링크를 삽입 할 때장고 - 월귤 (Django-Wagtail) - 모델을 컨텐트 패널에 추가 할 때 "페이지 선택"패널을 선택하는 방법은 무엇입니까?

Choose A Page Panel

이 패널을 사용할 수 있습니다. 그것은 내 필요에 완벽하지만 다른 곳에서는 찾을 수없는 것 같습니다.

저는 편집기가 기존 페이지 또는 외부 URL에 대한 링크를 선택할 수있는 필드를 만들려고합니다. URL은 내 템플릿의 ref="{{ page.my_url }}"으로 들어갑니다.

답변

3

외부 링크는 페이지 링크와 외부 URL 링크가 데이터베이스에서 다른 표현을 사용하기 때문에 서식있는 텍스트 외부에서는 사용할 수 없습니다. 외부 링크는 일반 URL 문자열이지만 페이지에 대한 링크는 관련 페이지를 가리키는 ForeignKey 신분증. (이렇게하면 페이지의 슬러그가 변경되면 링크가 끊어지지 않습니다.) 결과적으로 두 가지 종류의 값을 처리 할 수있는 모델에서 정의 할 수있는 필드 유형이 없습니다.

일반적인 해결 방법은 내부 링크 입력을위한 PageChooserPanel과 외부 링크를위한 FieldFanel (두 개의 선택적 필드)을 나란히 사용하여 모델에서 URL을 반환하는 일부 논리를 포함하는 것입니다 어느 쪽이 기입 되었든간에 :

class SomePage(Page): 
    related_page = models.ForeignKey('wagtailcore.Page', null=True, blank=True, related_name='+') 
    related_external_url = models.URLField("External link", blank=True) 

    content_panels = Page.content_panels + [ 
     PageChooserPanel('related_page'), 
     FieldPanel('related_external_url'), 
    ] 

    def related_url(self): 
     if self.related_page: 
      return self.related_page.url 
     else if self.related_external_url: 
      return self.related_external_url 
+0

유익하고 도움이되는 답변 ... 평상시처럼! 고마워요 @ 가스 만 – DDiran