참조 인덱스 관리¶
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 관리 명령으로 표시할 수 있습니다. 이는 각 모델 유형에 대해 인덱싱된 객체 수를 보여주며, 인덱스 자체를 재구축하지 않고도 어떤 모델이 인덱싱되고 있는지 식별하는 데 유용할 수 있습니다.