2010-01-05 4 views
7

У меня есть модели ресторана и комментариев, показанные ниже. В модели комментариев есть ForeignKey to Restaurant. Как выполнить поиск в некоторых из полей ресторана и в поле комментария модели Comment, который возвращает список экземпляров ресторана?Поиск в нескольких столах с django-haystack

Благодаря

class Restaurant(models.Model): 

    name = models.CharField(max_length=100) 
    country=models.ForeignKey(Country) 
    city=models.ForeignKey(City) 
    street=models.CharField(max_length=100) 
    street_number=models.PositiveSmallIntegerField() 
    postal_code=models.PositiveIntegerField(blank=True, null=True) 
    slug = models.SlugField(unique=True) 


class Comment(models.Model): 

    user = models.ForeignKey(User) 
    restaurant = models.ForeignKey(Restaurant) 
    submit_date = models.DateTimeField(blank = True, null = False) 
    comment = models.TextField() 

ответ

3

Я думаю, вы должны прочитать руководство: http://django-haystack.readthedocs.org/en/latest/tutorial.html

искать MultiValue:

class RestaurantIndex(indexes.SearchIndex): 
    comments = indexes.MultiValueField() 
    def prepare_comments(self, obj): 
     return [a for a in obj.comment_set.all()] 
+0

вы можете искать о поле MultiValue и использовать его с comment_set атрибутом в restaurat модели , – diegueus9

+0

Спасибо. Я действительно прочитал руководство, но не знал, как добавить комментарии в свой RestaurantIndex. Вы имеете в виду использование: comment = indexes.CharField (model_attr = 'comment_set') в моем RestaurantIndex? Если да, то как я могу указать, какие поля модели Comment должны быть проиндексированы? – jul

+0

Нет, я не могу найти правильную ссылку, но я имею в виду что-то вроде: класса RestaurantIndex (indexes.SearchIndex): комментариев = indexes.indexes.MultiValueField() Защиту prepare_comments (самостей, OBJ): возвращения [а для a в obj.comment_set.all()] – diegueus9

Смежные вопросы