I figured it out. The model uses a "different" name for the foreign key. In my instance test is results FK to testcase.
I changed it to Results.objects.all().select_related('profile','test') and worked. Thanks for your help. On Feb 5, 10:48 am, rc <reedcr...@gmail.com> wrote: > That worked great for the results and profile model, but I couldn't > get it to return any data from the testcase model?? > > My view > def get_results(request): > results_list = Results.objects.all().select_related > ('profile','testcase') > return render_to_response('biatf/index.html',{"results_list" : > results_list}) > > My template: > <form action="/graph/" method="POST"> > {% if results_list %} > <table> > {% for results in results_list %} > <tr> > <td><input type="checkbox" > name="result_id"value="{{ results.result_id }}"</td> > <td> {{ results.date }} </td> > <td> {{ results.profile.name }} </td> > <td> {{ results.testcase.test_name }} </td> > </tr> > {% endfor %} > </table> > <input type="submit" value="Show Graphs"/> > {% else %} > <p>No results are available.</p> > {% endif %} > </form> > > On Feb 5, 9:41 am, felix <crucialfe...@gmail.com> wrote: > > > Results.objects.all().select_related('profile','testcase') > > > that was easy > > > that's A join B,C > > > if it was A join B join C > > > (my example) > > > class Release > > fk Artist > > > class Artist > > fk Label > > > class Label > > > Release.objects.all().select_related('artist','artist_label') > > > note selecting the C class via the B class 'B_C' > > > On Thu, Feb 5, 2009 at 5:28 PM, Daniel Roseman < > > > roseman.dan...@googlemail.com> wrote: > > > > On Feb 5, 3:50 pm, rc <reedcr...@gmail.com> wrote: > > > > I am newbie to Django and I am struggling to get my arms around DJango > > > > and it's data access api (models). > > > > > I have these models: > > > > > class Profile(models.Model): > > > > profile_id = models.AutoField(primary_key=True) > > > > profile_name = models.CharField(max_length=75) > > > > def __unicode__(self): > > > > return self.profile_id > > > > def __unicode__(self): > > > > return self.profile_name > > > > class Meta: > > > > db_table = 'profile' > > > > > class Testcase(models.Model): > > > > test_id = models.AutoField(primary_key=True) > > > > test_name = models.CharField(max_length=300) > > > > src = models.ForeignKey(Source, null=True, blank=True) > > > > bitrate = models.IntegerField(null=True, blank=True) > > > > test_type = models.CharField(max_length=300) > > > > output_resolution = models.CharField(max_length=15, blank=True) > > > > def __unicode__(self): > > > > return self.test_name > > > > class Meta: > > > > db_table = 'testcase' > > > > > class Results(models.Model): > > > > result_id = models.AutoField(primary_key=True) > > > > date = models.DateTimeField() > > > > test = models.ForeignKey(Testcase) > > > > profile = models.ForeignKey(Profile) > > > > status = models.CharField(max_length=30) > > > > graph = models.BlobField(null=True, blank=True) > > > > y_psnr = models.DecimalField(null=True, max_digits=5, > > > > decimal_places=2, blank=True) > > > > u_psnr = models.DecimalField(null=True, max_digits=5, > > > > decimal_places=2, blank=True) > > > > v_psnr = models.DecimalField(null=True, max_digits=5, > > > > decimal_places=2, blank=True) > > > > yuv_psnr = models.DecimalField(null=True, max_digits=5, > > > > decimal_places=2, blank=True) > > > > def __unicode__(self): > > > > return self.result_id > > > > class Meta: > > > > db_table = 'results' > > > > > and I want to be able to display this data: > > > > > select result_id, date, profile_name, test_name, status, y_psnr, > > > > u_psnr, v_psnr, yuv_psnr > > > > from profile, testcase, results > > > > where profile.profile_id = results.profile_id > > > > and testcase.test_id = results.test_id > > > > > Which is very easy to do with raw sql, but struggling to do it the > > > > "django' way. > > > > > Any ideas? > > > > I have also tried to use raw sql, but struggled to get it to work in > > > > my views and templates. > > > > The Django ORM is there to help you. If you don't find it easy, don't > > > use it. However, the simple way of doing it would be something like > > > this: > > > > for testcase in Testcase.objects.all(): > > > print testcase.status > > > for result in testcase.result_set.all(): > > > print result.result_id, result.date, > > > result.profile.profile_name, \ > > > result.status, result.y_psnr, \ > > > result.u_psnr, result.v_psnr, result.yuv_psnr > > > > You can make that much more efficient via proper use of > > > select_related, but that's the general idea. > > > > Not related to your problem, but you've got an issue with your inner > > > Meta classes - each time they are indented under the __unicode__ > > > method. They should be one indent level back. > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---