참조 인덱스 관리

Wagtail은 객체가 저장될 때마다 객체 간의 참조를 기록하는 참조 인덱스를 유지 관리합니다. 이 인덱스를 통해 Wagtail은 StreamField 및 리치 텍스트 필드를 포함하여 페이지 내 이미지, 문서 및 스니펫 사용량을 효율적으로 보고할 수 있습니다.

구성

기본적으로 인덱스는 Wagtail 관리자 내에서 관리되는 객체 간의 참조를 저장합니다. 구체적으로:

  • 모든 페이지 유형

  • 이미지

  • 문서

  • 스니펫으로 등록된 모델

  • ModelViewSet으로 등록된 모델

참조 인덱스는 추가 구성이 필요하지 않습니다. 그러나 인덱스에서 모델을 추가하거나 제거해야 하는 경우가 있습니다.

인덱싱을 위한 모델 등록

모델은 모델이 정의된 앱의 apps.py 에 코드를 추가하여 참조 인덱싱을 위해 등록할 수 있습니다.

from django.apps import AppConfig


class SprocketAppConfig(AppConfig):
    ...
    def ready(self):
        from wagtail.models.reference_index import ReferenceIndex

        from .models import SprocketController

        ReferenceIndex.register_model(SprocketController)

모델 및 필드 인덱싱 방지

wagtail_reference_index_ignore 속성을 사용하여 특정 모델 또는 모델 필드의 인덱싱을 방지할 수 있습니다.

  • 모델의 모든 필드 인덱싱을 방지하려는 모델 클래스 내에서 wagtail_reference_index_ignore 속성을 True 로 설정합니다. 또는

  • 해당 필드 또는 관련 모델 필드가 인덱싱되는 것을 방지하기 위해 모델 필드 내에서 wagtail_reference_index_ignore 속성을 True 로 설정합니다.

class CentralPage(Page):
    ...
    reference = models.ForeignKey(
        "doc",
        on_delete=models.SET_NULL,
        related_name="page_ref",
    )
    reference.wagtail_reference_index_ignore = True
    ...

유지 관리

인덱스는 rebuild_references_index 관리 명령으로 재구축할 수 있습니다. 이렇게 하면 참조 테이블이 다시 채워지고 참조 수가 정확하게 표시됩니다. 이는 Wagtail 외부에서 모델을 조작하거나 업그레이드 후에 수행해야 합니다.

인덱스 요약은 show_references_index 관리 명령으로 표시할 수 있습니다. 이는 각 모델 유형에 대해 인덱싱된 객체 수를 보여주며, 인덱스 자체를 재구축하지 않고도 어떤 모델이 인덱싱되고 있는지 식별하는 데 유용할 수 있습니다.