Hello Karen,

What I need then is to rewrite the model statement.  I imported the
tables from MySQL, so the table structures were already set.  Should I
add a manytomany field in the contact table?  I'm concerned about
django creating a new separate table from the intermed table I already
have. Resolving this problem will probably solve my admin template
issue, which is that on the publication screen, I can reveal a contact
for the publication, but I can't reveal the institutions the contact
is associated with.

May

On Feb 18, 1:01 pm, Karen Tracey <kmtra...@gmail.com> wrote:
> On Wed, Feb 18, 2009 at 3:13 PM, May <adles...@gmail.com> wrote:
>
> > Hello Karen,
>
> > Yes, I seem confused here.  I've been trying everything.  The key is
> > that this query works correctly in the postgres database to retrieve
> > the institutionname (institution), using the contact id retrieved from
> > Project:
>
> > select DISTINCT Institution.institution
> > from Contactintermed, Institution, Project
> > where Contactintermed.contact_id=Project.contact_id
> > and Contactintermed.institution_id=Institution.id
>
> What do you mean by "works correctly"?  You mean it retrieves exactly one
> result?  If so, that is an accident of the data you happen to have in your
> DB, not anything guaranteed by the models you have defined.  As you have
> defined your models, any Contact might have multiple associated
> Institutions, so asking how to come up with THE institution associated with
> a Contact is futile.  There isn't one, there is a list (accessible via the
> Contact.contactintermed_set related manager) of 0, 1, or more.  If you want
> to print out all Institutions associated with a Contact, you can iterate
> through that set for each contact in the template, something like (warning
> -- untested syntax, I could be misremembering details):
>
> {% for project in results %}
>     {{project.contact|safe}}
>     {% for ci in project.contact.contactintermed_set.all %}
>         {{ ci.institution }}
>     {% endfor %}
> {% endfor %}
>
> But there is nothing in your data models that guarantees the length of
> contactintermed_set for a given Contact is going to be 1.  If there is
> something in the actual data model that guarantees that then your Django
> model definitions aren't properly reflecting your real data model.
>
> > In Python after I do a search by keyword in the view to get the
> > "results", I cannot get the template to display the institution name
> > (which I call institution).  The query must first retrieve the Project
> > records.  From the project records I can then grab the contactid,
> > which is then used in the Contactintermed table, which then goes to
> > the Institution table to retrieve the institution name (institution).
> > The "results" statement, doesn't seem to drill down through the
> > Contactintermed table, even though I've tried adding the
> > select_related to the statement.
>
> select_related doesn't affect what's accessible via a model, it's purely a
> performance optimization that affects how many SQL queries will be issued
> under the covers when following ForeignKey relationships.  It's also not
> applicable here in terms of 'drilling down' to Contactintermed because
> neither your Project nor your Contact model has a ForeignKey to
> Contactintermed, rather Contactintermed is the one with the ForeignKeys back
> to Contact and Institution.
>
> Karen
--~--~---------~--~----~------------~-------~--~----~
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 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to