Thanks. Sounds like a good idea! I will give it try!

On Sun, Sep 28, 2008 at 5:54 PM, Erik Allik <[EMAIL PROTECTED]> wrote:

> 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 [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
-~----------~----~----~----~------~----~------~--~---

Reply via email to