मेरे पास इवेंट मॉडल उदाहरण हैं जो एक या अधिक संगठन मॉडल उदाहरणों से संबंधित हो सकते हैं। मैंने अपने सभी कार्यक्रमों को इंडेक्स करने के लिए हैस्टैक 2.0.0 लागू किया है। यहां एक उदाहरण खोज सूचकांक है।Django Haystack: सूची में एकाधिक आइटमों के आधार पर फ़िल्टर क्वेरी।
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()
मेरे सवाल यह है कि मैं एक SearchQuerySet क्वेरी कि एक या कई संगठनों के आधार पर घटनाक्रम फिल्टर का निर्माण करते हैं। उदाहरण के लिए, मैं
के रूप में (जहां संगठनों की सूची किसी भी लंबे लंबाई हो सकता है) सब घटनाक्रम कि करने के लिए "orgnization1" और "organization3" हैं खोजने के लिए चाहते हैं Django क्वेरी यह कुछ इस तरह लग सकता है एक:
Event.objects.filter(organization__in=[orgnization1, organization3]).filter(...)
मैं इसे एक हैस्टैक क्वेरी में कैसे अनुवाद करूं? यह मेरा प्रयास है, लेकिन मैं वास्तव में नहीं जानता कि मैं क्या कर रहा हूँ ...
organization_list = [organization1.slug, organization2.slug]
SearchQuerySet().filter_or(organization__contains=organization_list)
यहाँ कैसे अपने मॉडल देखने का एक उदाहरण है:
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)
...
किसी भी मदद की बहुत सराहना कर रहा है।
मुझे पता है यह काफी पुराना है, लेकिन आप .filter कर सकते हैं (organization_slug__in = organization_list) – Nagyman
नाइस कोड: डी, धन्यवाद –