5
मैं निम्नलिखित मॉडल:SearchQuerySet में विदेशी कुंजी वस्तु परिणाम Haystack
class EquipmentModel(models.Model):
name = models.CharField(max_length=64, blank=False)
description = models.CharField(max_length=64, blank=True)
manufacturer = models.ForeignKey(Manufacturer, related_name="manufacturer")
....
और निम्नलिखित अनुक्रमित:
class EquipmentModelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
name = indexes.CharField(model_attr="name")
manufacturer = indexes.CharField()
def get_model(self):
return EquipmentModel
def index_queryset(self, using=None):
return self.get_model().objects.all()
और है कि मेरे equipmentmodel_text.txt
{{वस्तु के लिए .name}} {{object.manufacturer}}
हालांकि, जब कभी भी मैं यह प्रश्न करता हूं:
results = SearchQuerySet().models(EquipmentModel).filter(name__startswith=request.GET['q'])[:5]
मुझे केवल निर्माता का पीके मिलता है। मैं पूरी वस्तु चाहता हूं (या कम से कम इसका नाम)। क्या यह संभव है?!
धन्यवाद!
ठीक है यह काम करता है! अब ... मैं थोड़ा उलझन में हूं कि उपकरणमोडेल इंडेक्स में फ़ील्ड का अंतर क्या है और उपकरण model_text.txt में ...? .txt में, क्या मुझे {{object.manufacturer.name}} या {{object.manufacturer_name}} रखना चाहिए? अगर मैं इंडेक्स और .txt से पूर्ण निर्माता_नाम हटा देता हूं, तो भी मैं SearchQuerySet से लौटाई गई वस्तुओं से इसे एक्सेस कर सकता हूं? धन्यवाद! – abisson
txt के साथ आप अनुक्रमित टेम्पलेट का मतलब है? बेशक आप वहां {{{object.manufacturer.name}} डाल सकते हैं क्योंकि आप Django के मॉडल ऑब्जेक्ट्स के साथ काम करते हैं ... यदि आप इसे इंडेक्स से हटाते हैं तो भी आप नाम तक पहुंच सकते हैं क्योंकि यदि आप 'result.object' तक पहुंचते हैं हैस्टैक डेटाबेस से डेटा को अतिरिक्त रूप से लोड करता है ... अच्छे प्रदर्शन के लिए केवल इंडेक्स से डेटा के साथ काम करते हैं (लेकिन फिर आपको इसे अपरिवर्तित रखने की आवश्यकता है!)। –
यह आपके लिए दिलचस्प हो सकता है: http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html#load-all, https://django-haystack.readthedocs.org/en/master/best_practices। एचटीएमएल # से बचने-डेटाबेस-डेटाबेस –