user1403568
user1403568

Reputation: 493

query in query django

how to make such query in django.

I have Site model where I can find relation to the topic model. In topic model I can fing relation to the post model. I want to extract post from a site having information only about site, not a topic. What is more posts have to starts with query.

query = request.GET.get('query','')         
iweb_obj = IWeb.objects.get(id=iweb_id)
topics = Topic.objects.filter(iweb=iweb_obj)
iweb_posts = []

for t in topics:
  posts = Post.objects.filter(topic=t)

for p in posts:
  iweb_posts.append(p)          


iweb_posts = iweb_.filter(content__istartswith=query)

I have an error that iweb_posts isnt query set and I cant make such action. It is quite obvious, however I do not have idea how to make it works ? I've heard that I can use filter(**kwargs) but I do not know how to use it ?

Upvotes: 0

Views: 86

Answers (1)

mVChr
mVChr

Reputation: 50177

Your logic looks a little funky since you're overwriting posts each time in the topic loop. You can accomplish what you need without loops and lists using only query set filters (I've added an __in filter, for example):

query = request.GET.get('query','')         
iweb_obj = IWeb.objects.get(id=iweb_id)
topics = Topic.objects.filter(iweb=iweb_obj)

iweb_posts = Post.objects.filter(topic__in=topics).filter(content__istartswith=query)

Upvotes: 1

Related Questions