> I am trying to learn django and write a small application. I am facing issue
> in executing a join with django.
> I am able to find a work around by executing a raw SQL query using cursor.
> But that have problem that I need to access fields using
> "object.0' or 'object.1'  which is too verbose and error prone.
>
> Is there better way of doing the same thing or executing joins using Django
> models.
>
> here is my table structure
>
> table 1 : Company
> id = IntField
> name = CharField
>
> table 2 : Schmes
> id = Int field
> Name = CharFiled
> comp_id = ForeignKey (company)
>
> table 3 : Price
>
> scheme_id = ForeignKey(Schemes)
> price          = CharField()
> Date          = DateTimeField()
>
> I want to execute a query on the price table where I can select the price of
> all the schemes for the specified company.
>
> something like this if I write SQL :
>
> select price from Price, Schemes, Company where Price.scheme_id = Scheme.id
> and Scheme.comp_id = Company.id and Company.id = 1.

Puneet,

Try something like this:

company = Company.objects.get(name="foocorp")
prices = Price.objects.filter(scheme_id__comp_id=company)

You can use __ (double underscores) to span relationships.

The Docs have more:
http://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships

Regards,
BG

-- 
Baishampayan Ghose
b.ghose at gmail.com
_______________________________________________
BangPypers mailing list
BangPypers@python.org
http://mail.python.org/mailman/listinfo/bangpypers

Reply via email to