I'm not sure how to do a join against a related record:

g=SiteEnergy.objects.filter(siteyear=9, energy__isofsite=False)
raise TypeError, "Cannot resolve keyword '%s' into field" % name
TypeError: Cannot resolve keyword 'energy' into field

g=SiteEnergy.objects.filter(siteyear=9, typer.isoffsite=False)
SyntaxError: keyword can't be an expression

The query looks like this is standard SQL (Postgres) -- I'm not sure of the
Django approach here.

    SELECT 
        se.* 
    FROM 
        bm_siteenergy se, data_energy e 
    WHERE 
        se.typer_id = e.id 
        AND 
        e.isoffsite=FALSE;

Thanks for any help;
Rory

class SiteEnergy (models.Model):
        '''
        An Energy supply definition for a particular Site for a particular
        Year of Assessment
        '''
        siteyear    = models.ForeignKey  (SiteYear)
        typer       = models.ForeignKey  (Energy)
        source      = models.CharField   ('Source'       , maxlength =250)
        usage       = models.FloatField  ('Usage'        , max_digits=10 , 
decimal_places=2, default=0)
        # units come from Energy
        kwh         = models.FloatField  ('kWh'          , max_digits=10 , 
decimal_places=2, default=0)
        cwf         = models.FloatField  ('Carbon Factor', max_digits=13 , 
decimal_places=5, default=0)

from data/models.py:

class Energy (models.Model, General):
        name       = models.CharField     ('EPLabel Energy Name', blank=False 
,maxlength = 200)
        localname  = models.CharField     ('Local Energy Name'  , blank=True  
,maxlength = 200)
        factorname = models.CharField     ('Factor Name'        , blank=False 
,maxlength = 50)
        localfactorname = models.CharField('Local Factor Name'  , blank=True  
,maxlength = 50)
        # factor numbers in format 999999.9999999 (9 hundred thousand to 7 
decimal places)
        unit       = models.CharField     ('Factor Unit'        , blank=False 
,maxlength = 50)
        factor     = models.FloatField    ('Factor'             , blank=False 
,max_digits= 13   , decimal_places=7)
        isreverse  = models.BooleanField  ('Reverse Factor'     , blank=False 
,default   = False)
        isoffsite  = models.BooleanField  ('Off Site'           , blank=False 
,default   = False)
        isthermal  = models.BooleanField  ('Thermal Type'       , blank=False 
,default   = False)
        created    = models.DateTimeField (auto_now=True)
        country    = models.ForeignKey    (Country)

Postgres tables:

    eplabel=> \d bm_siteenergy
                                       Table "public.bm_siteenergy"
       Column    |          Type          |                         Modifiers   
                       
    
-------------+------------------------+------------------------------------------------------------
     id          | integer                | not null default 
nextval('bm_siteenergy_id_seq'::regclass)
     siteyear_id | integer                | not null
     typer_id    | integer                | not null
     source      | character varying(250) | not null
     usage       | numeric(10,2)          | not null
     kwh         | numeric(10,2)          | not null
     cwf         | numeric(13,5)          | not null
    Indexes:
        "bm_siteenergy_pkey" PRIMARY KEY, btree (id)
    Foreign-key constraints:
        "bm_siteenergy_siteyear_id_fkey" FOREIGN KEY (siteyear_id) REFERENCES 
bm_siteyear(id)
        "bm_siteenergy_typer_id_fkey" FOREIGN KEY (typer_id) REFERENCES 
data_energy(id)

    eplabel=> \d data_energy
                                          Table "public.data_energy"
         Column      |           Type           |                        
Modifiers                         
    
-----------------+--------------------------+----------------------------------------------------------
     id              | integer                  | not null default 
nextval('data_energy_id_seq'::regclass)
     name            | character varying(200)   | not null
     localname       | character varying(200)   | not null
     factorname      | character varying(50)    | not null
     localfactorname | character varying(50)    | not null
     unit            | character varying(50)    | not null
     factor          | numeric(13,7)            | not null
     isreverse       | boolean                  | not null
     isoffsite       | boolean                  | not null
     isthermal       | boolean                  | not null
     created         | timestamp with time zone | not null
     country_id      | integer                  | not null
    Indexes:
        "data_energy_pkey" PRIMARY KEY, btree (id)
    Foreign-key constraints:
        "data_energy_country_id_fkey" FOREIGN KEY (country_id) REFERENCES 
data_country(id)


-- 
Rory Campbell-Lange 
<[EMAIL PROTECTED]>
<www.campbell-lange.net>

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