Hi,

i want to save a lot of data (measurement values). The structure is,
that i have dataloggers (which produce data), sensors (are connected
to the datalogger with foreignkey), and projects. every logger is
connected to one project (foreignkey). then, there is a app called
Data.

i have the following data model:

class Entry(models.Model):
    """
    a data entry. Normaly, it is one row from a measurement file
    a new entry has one datetime, a project, and a logger_serial
    """
    project = models.ForeignKey(Project)
    logger = models.ForeignKey(Logger)
    original_file = models.ForeignKey(OriginalFile)
    datetime = models.DateTimeField(help_text='the date and time of
the measurement entry', db_index=True)

    class Meta:
        unique_together = [('logger', 'datetime')]
        ordering = ['project', 'logger', 'datetime']

class Measurand(models.Model):
    """
    A Model for measurement data
    """
    entry = models.ForeignKey(Entry)
    sensor = models.ForeignKey(Sensor)

    class Meta:
        unique_together = [('entry','sensor')]
        ordering = ['entry', 'status']


class MeasurandAverage(models.Model):
    """
    Model to store the average value for a measurand
    """
    measurand = models.OneToOneField(Measurand, parent_link=True)
    value = models.FloatField(help_text='the average measurement
value', db_index=True)
    unit = models.CharField(help_text='the unit of the measurement
value', max_length=20, db_index=True)

class MeasurandMax(models.Model):
    """
    Model to store the max value for a measurand
    """
    measurand = models.OneToOneField(Measurand, parent_link=True)
    value = models.FloatField(help_text='the max measurement value',
db_index=True)
    unit = models.CharField(help_text='the unit of the measurement
value', max_length=20, db_index=True)


class MeasurandMin(models.Model):
    """
    Model to store the min value for a measurand
    """
    measurand = models.OneToOneField(Measurand, parent_link=True)
    value = models.FloatField(help_text='the min measurement value',
db_index=True)
    unit = models.CharField(help_text='the unit of the measurement
value', max_length=20, db_index=True)


class MeasurandSigma(models.Model):
    """
    Model to store the standard derivation (sigma) value for a
measurand
    """
    measurand = models.OneToOneField(Measurand, parent_link=True)
    value = models.FloatField(help_text='the sigma measurement value',
db_index=True)
    unit = models.CharField(help_text='the unit of the measurement
value', max_length=20, db_index=True)



now, i want to receive a list with all Measurand and also the Average,
Max, Min, Sigma Values for every measurand.
The problem is, that when i have a list with 50 measurands and access
the measurandmax in my template with {{measurand.measurandmax.value}},
this produce a query. and also every access to max, min and sigma
produces a query.

When i have a list with 100 Measurand, i have about 400 queries to get
the data.

The queries look like this:

SELECT "data_measurandaverage"."id",
"data_measurandaverage"."measurand_id",
"data_measurandaverage"."value", "data_measurandaverage"."unit" FROM
"data_measurandaverage" WHERE "data_measurandaverage"."measurand_id" =
1
SELECT "data_measurandmin"."id", "data_measurandmin"."measurand_id",
"data_measurandmin"."value", "data_measurandmin"."unit" FROM
"data_measurandmin" WHERE "data_measurandmin"."measurand_id" = 1
SELECT "data_measurandmax"."id", "data_measurandmax"."measurand_id",
"data_measurandmax"."value", "data_measurandmax"."unit" FROM
"data_measurandmax" WHERE "data_measurandmax"."measurand_id" = 1
SELECT "data_measurandsigma"."id",
"data_measurandsigma"."measurand_id", "data_measurandsigma"."value",
"data_measurandsigma"."unit" FROM "data_measurandsigma" WHERE
"data_measurandsigma"."measurand_id" = 1



Any ideas how i can improve the queries or the structure of my models?

cheers,

tom
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected]
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