Since a Company could have multiple Products, it's not really possible  
to show the product as well with the way you do the querying.

I would instead do a search on the Product model and then simply  
iterate over the resulting products displaying the company for each of  
them, too:

def search(request):
   q = request.GET.get('q', '')
   if q:
     qset = (
       Q(co__name__icontains=q) |
       Q(co__url__icontains=q) |
       Q(name__icontains=q) |
       Q(key__name__icontains=q)
     )
     results = Product.objects.filter(qset).distinct()
   else:
     results = []
   return render_to_response(...)

In the template:
{% for product in results %}
   <li>Product: {{ product }}, company: {{ product.co }}</li>
{% endfor %}

As a sidenote, I'd use readable column names such as "company" instead  
of "co". If you need to map to a legacy database which has "co_id" as  
the name of the column, simply do:

company = models.ForeignKey(Company, dbcolumn='co_id')

Erik

On 29.09.2008, at 1:29, Tom MacKenzie wrote:

> If anyone could have a look it would be much appreciated.
>
> -Tom
>
> On Sat, Sep 27, 2008 at 6:40 PM, Tom MacKenzie <[EMAIL PROTECTED] 
> > wrote:
> http://django.pastebin.com/d1c579dbf
>
> Thanks!
>
>
> On Sat, Sep 27, 2008 at 5:48 PM, Ovnicraft <[EMAIL PROTECTED]>  
> wrote:
> is posible use pastebin? http://django.pastebin.com/
>
> 2008/9/27 [EMAIL PROTECTED] <[EMAIL PROTECTED]>
>
> my view is below.
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
> <html lang="en">
> <head>
>    <title>Search{% if query %} Results{% endif %}</title>
> </head>
> <body>
>  <h1>Search</h1>
>  <form action="." method="GET">
>    <label for="q">Search: </label>
>    <input type="text" name="q" value="{{ query|escape }}">
>    <input type="submit" value="Search">
>  </form>
>
>  {% if query %}
>    <h2>Results for "{{ query|escape }}":</h2>
>
>    {% if results %}
>      <ul>
>      {% for company in results %}
>        <li>{{ company|escape }}</l1>
>      {% endfor %}
>      </ul>
>    {% else %}
>      <p>No companys found</p>
>    {% endif %}
>  {% endif %}
> </body>
> </html>
>
>
>
> On Sep 27, 4:45 pm, "[EMAIL PROTECTED]"
>
> <[EMAIL PROTECTED]> wrote:
> > I have a company model which relates to a product model 1-> M.
> >
> > My goal is to search both models and return a result set set that  
> will
> > show the company name and product name that are results of the  
> query.
> > The implementation below only shows the company name.
> >
> > 1. Can I send back the product as well?
> > 2. Should I call a function from the template to retrieve the  
> product?
> >
> > any help appreciated!
> >
> > my models are:
> > class Product(models.Model):
> >   co       = models.ForeignKey(Company)
> >   key      = models.ForeignKey(Keyword)
> >   name     = models.CharField(max_length=100)
> >   pub_date = models.DateTimeField(default=datetime.datetime.now())
> >
> >   def __unicode__(self):
> >     return self.name
> >
> > class Product(models.Model):
> >   co       = models.ForeignKey(Company)
> >   key      = models.ForeignKey(Keyword)
> >   name     = models.CharField(max_length=100)
> >   pub_date = models.DateTimeField(default=datetime.datetime.now())
> >
> >   def __unicode__(self):
> >     return self.name
> >
> > My view is...
> >
> > from django.db.models import Q
> > from django.shortcuts import render_to_response
> > from models import Company
> >
> > def search(request):
> >     query = request.GET.get('q', '')
> >     if query:
> >         qset = (
> >             Q(name__icontains=query) |
> >             Q(url__icontains=query) |
> >             Q(product__name__icontains=query) |
> >             Q(product__key__name__icontains=query)
> >         )
> >         results = Company.objects.filter(qset).distinct()
> >     else:
> >         results = []
> >     return render_to_response("foods/search.html", {
> >         "results": results,
> >         "query": query
> >     })
> >
> > My template is...
> > from django.db.models import Q
> > from django.shortcuts import render_to_response
> > from models import Company
> >
> > def search(request):
> >     query = request.GET.get('q', '')
> >     if query:
> >         qset = (
> >             Q(name__icontains=query) |
> >             Q(url__icontains=query) |
> >             Q(product__name__icontains=query) |
> >             Q(product__key__name__icontains=query)
> >         )
> >         results = Company.objects.filter(qset).distinct()
> >     else:
> >         results = []
> >     return render_to_response("foods/search.html", {
> >         "results": results,
> >         "query": query
> >     })
>
>
>
>
> -- 
> [b]question = (to) ? be : !be; .[/b]
>
>
>
>
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to