批量添加多个实例的m2m关系

时间:2015-08-09 17:47:39

标签: django

这个编码对DB很重要。有没有办法通过将它们组合在一起来减少数据库命中数?如果不是在Django中是否可以使用SQL?我的开发机器是SQLite,生产是PostgreSQL。如果可能的话,请给我一些关于从哪里开始的提示。

class Sensor(models.Model):
    Name     = models.CharField( max_length=200 )
    Value    = models.FloatField()

class DataPoint(BaseModel):
    Taken_datetime = models.DateTimeField( blank=True, null=True ) 
    Sensors        = models.ManyToManyField( SensorVal, blank=True, null=True )    

for row in rows:
    dp = DataPoint.objects.get(Taken_datetime=row['date']) 

    sensorToAdd = []
    for sensor in sensors:
        s = Sensor.objects.get(Name=sensor.name, Value=sensor.value  )
        sensorToAdd.append( s )

    dp.Sensors.add( sensorToAdd )

所有数据都存储在cvs文件中,所以我在开始时就知道所有数据。

对于每一行,代码命中数据库以加载DataPoint,加载传感器,并将传感器连接到DataPoint。我正在寻找像bulk_create这样的东西,但是对于m2m字段。我发现的所有解决方案都使用了我上面使用的相同方法。我遇到的问题是DataPoints有很多时间,而且我很多时候都在使用DB。我想将所有这些组合在一起并进行一些数据库调用。

如果有更好的方法来建模数据而不使DB更大?我会对此持开放态度。

0 个答案:

没有答案