2014-04-19 3 views
0

그래서 Django-Haystack (elasticsearch 백엔드)을 사용하여 일부 항목을 색인화하려고합니다. 색인 기준 중 하나는 항목에 태그가있는 m2m 관계입니다 (나만의 맞춤 솔루션을 구현했습니다. taggit 사용), 내 모델은 다음과 같습니다.Django-haystack - 검색 색인에서 관계를 나타내는 법?

class GalleryTag(models.Model): 
    tag = models.CharField(max_length=100, unique=True) 
    slug = AutoSlugField(populate_from='tag', unique=True) 

    class Meta: 
     abstract = True 
    def __unicode__(self): 
     return self.tag 


class Tag(GalleryTag): 
    pass 


class Artist(GalleryTag): 
    pass 


class Character(GalleryTag): 
    pass 

class Gallery(models.Model):  
    characters = models.ManyToManyField(Character, blank=True, related_name='characters') 
    artists = models.ManyToManyField(Artist, blank=True, related_name='artists') 
    tags = models.ManyToManyField(Tag, blank=True, related_name='tags') 
    def __unicode__(self): 
     return self.name 

내가 검색 할 인덱스에 노력하고있어 개체가 갤러리, 그리고 내가 태그, 예술가, 문자 (모든 m2ms) 그들에 검색 기준 중 하나를 가질 수 있도록하고 싶습니다 . 관계를 검색 할 수있는 방법을 찾지 못했지만 기본적인 예제는 완전히 평평한 모델 만 사용합니다. 감사.

답변

0

이 작업을 수행하는 한 가지 방법은 템플릿 파일 GalleryIndex의 데이터를 가져 오는 것입니다. 뭔가 같은 :

템플릿은 다음 GalleryIndex에 태그라는 필드를 추가하고 관련 데이터, 연접를 쿼리로 반환하는 루틴 prepare_tags(self, obj)를 추가하기위한 어떤 이유로, 당신의 관계를 해결하는 것은 너무 복잡, 경우
{% for s in object.hasTags.all %} 
{{t.tag}} 
{% endfor %} 

문자열.

관련 문제