So, here is the solution that can help u. I will explain it using
these models:
class Model1(models.Model):
text_field = ....
model_2 = models.ForeignKey('Model2')
class Model2(models.Model):
model_3 = models.ForeignKey('Model3')
class Model3(models.Model):
....
....
Goal is to get only those objects of Model1 which have model_3
field ,in Model2, equal to number let's say 201 :-)
1. main point to do foreign key search is to edit sphinx.config int he
way Sphinx can find "it's way through our tables", to create the
appropriate relations
- after creating sphinx.config file for Model1, you can see that
SQL_QUERY statement is:
SELECT id, text_field, model_2_id from myApp.model1
- we will edit this statement according the "columns logic"
2. let's edit sql_query in this way:
SELECT myApp.model1.id as id, text_field, model_2_id,
myApp.model2.model_3_id as model_3_id from myApp.model1, myApp.model2
where myApp.model2.id = model_2_id
- i've created relation between Model1 and Model2, so that Model2's
field model_2 is accessible through Model1
3. After creatin indexes you do searching Model2 through Model1:
Model1.search.all().filter(model_3_id=201)
I have tested this approach in my project and it works like a charm, i
can confirm that :-)
This way you can search multiple models in FK relation and to do
fulltext searching (not only id searching), just modify sql_query
accordingly.
Also great article can be found here:
http://www.marcofucci.com/tumblelog/31/aug/2009/django-sphinx-search-...
I've discussed this foreign key search with author of that article,
Marco Fucci, and he helped me really a lot to understand the way
Sphinx works.
Hope it helps.
Sorry for the delay, but i needed to finish adding google maps to my
project.
Radovan
yafeng wu wrote:
>
> Hi,
>
> I got the same problem when building my website. Have you solved it?
> Please let me know.
>
> Thanks,
>
> On Apr 13, 4:04 am, urukay <[email protected]> wrote:
>> Hi,
>>
>> I'm trying to create full text search on model, everything goes fine
>> when
>> searching TextFields but I have a problem with ForeignKey field.
>>
>> How can i do that? Can anyone point me to the right direction?
>>
>> Thanks
>>
>> Model example:
>>
>> class Model1(models.Model):
>>
>> text_field =models.TextField(max_length=250)
>> fek_field = models.ForeignKey('Model2')
>>
>> class Model2(models.Model):
>> text_field = models.TextField(max_length=250)
>>
>> --
>> View this message in
>> context:http://old.nabble.com/Django-Sphinx-Foreign-key-search-tp28219147p282...
>> Sent from the django-users mailing list archive at Nabble.com.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>
>
--
View this message in context:
http://old.nabble.com/Django-Sphinx-Foreign-key-search-tp28228784p28931105.html
Sent from the django-users mailing list archive at Nabble.com.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.