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

Reply via email to