Je traversais le django-sphynx documentation, et il semble que cela vous permet de filtrer les résultats de recherche en utilisant les attributs ,Filtrer les résultats de Django-sphinx en utilisant des attributs?
queryset = MyModel.search.query('query')
results1 = queryset.order_by('@weight', '@id', 'my_attribute')
results2 = queryset.filter(my_attribute=5)
results3 = queryset.filter(my_other_attribute=[5, 3,4])
results4 = queryset.exclude(my_attribute=5)[0:10]
De quelques exemples, ces attributs semblent être quelque chose que vous spécifiez dans le sphynx fichier de configuration, plutôt que d'être des valeurs de colonne réelles dans la table. Le fichier de configuration permet quelque chose comme ça,
# ForeignKey's
# Apparently sql_group_column is now replaced by sql_attr_uint
sql_group_column = country_id
sql_group_column = state_id
sql_group_column = listings
# DateField's and DateTimeField's
sql_date_column = date_added
Mais il se trouve que vous ne pouvez spécifier des clés étrangères que cette valeur. Comme illustré dans another example,
Class City(models.Model):
...
# Comment: The below should probly be country_id and state_id
country_id = models.ForeignKey(Country)
state_id = models.ForeignKey(State, blank=True, null=True)
listings = models.PositiveIntegerField(editable=False, default=0)
Lorsque le résultat de recherche est imprimé, vous obtenez,
print results[0]._sphinx
{'id': u'5246', 'weight': 200, 'attrs': {'state_id': 3, 'country_id': 0}}
Comme vous pouvez le voir, attrs - state_id et country_id - être FKs, apparaissent. Mais les listes ne le font pas.
Et voilà mon problème. Si je veux filtrer mes résultats de recherche sphinx en utilisant une colonne aribtrary foo dans mon modèle - comment le ferais-je?
Merci!
Modifier
En réponse à Van Gale,
Je suis en fait à l'aide sql_attr_uint plutôt que sql_group_column ici .. et comme je l'ai mentionné dans l'exemple ci-dessus .. même l'exemple de l'auteur de Django Sphinx (lien donné ci-dessus) n'affiche pas l'attribut dans la dict _Sphinx si ce n'est pas un FK .. (Voir l'instruction "Comme vous pouvez le voir" ci-dessus). Aussi, j'ai déjà la chaîne SQL_Query aussi .. il sélectionne toutes les colonnes dans ma table .. (individuellement, pas *)
avez-vous eu une solution à ce problème? Je suis coincé elle ... –