Tôi có các cá thể mô hình Sự kiện có thể thuộc về một hoặc nhiều phiên bản mô hình Tổ chức. Tôi đã triển khai haystack 2.0.0 để lập chỉ mục tất cả các Sự kiện của tôi. Đây là một chỉ mục tìm kiếm ví dụ.Django Haystack: lọc truy vấn dựa trên nhiều mục trong danh sách.
class EventIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
organization_slug = indexes.CharField(model_attr='organization__slug',
weight=5.0)
organization_name = indexes.CharField(model_attr='organization__name',
weight=5.0)
name = indexes.CharField(model_attr='name', weight=10.0)
....
def get_model(self):
return Event
def index_queryset(self):
return Event.objects.filter()
Câu hỏi của tôi là làm cách nào để tạo truy vấn SearchQuerySet lọc sự kiện dựa trên một hoặc một số tổ chức. Ví dụ, tôi muốn tìm tất cả các sự kiện thuộc về "orgnization1" và "organization3" (nơi danh sách các tổ chức có thể là bất kỳ chiều dài dài)
Là một Django truy vấn nó có thể trông giống như thế này:
Event.objects.filter(organization__in=[orgnization1, organization3]).filter(...)
Làm cách nào để dịch điều này thành truy vấn haystack? Đây là nỗ lực của tôi, nhưng tôi không thực sự biết những gì tôi đang làm ...
organization_list = [organization1.slug, organization2.slug]
SearchQuerySet().filter_or(organization__contains=organization_list)
Dưới đây là một ví dụ về cách mô hình của tôi trông:
class Event(models.Model):
name = models.CharField(max_length=64)
organization = models.ForeignKey('mymodule.Organization')
...
class Organization(models.Model):
slug = models.SlugField(max_length=64)
name = models.CharField(max_length=64)
...
Bất kỳ giúp đỡ được nhiều đánh giá cao.
Tôi nhận ra điều này là khá cũ, nhưng bạn có thể .filter (organization_slug__in = organization_list) – Nagyman
đang Nice: D, thanks –