次のような on success を持つ Y.io コマンドを介してサーバーの応答を保存します。
on: {
success: function (requestId, response){
sess_id = parseInt(response.responseText);
buildtable();
}
}
buildtable() は、シミュレートされたデータを作成し、sess_id 変数を使用して session というラベルの付いた列に入力します。このようにして、シミュレートされたすべてのデータ読み取りがセッションに関連付けられます。これら 2 つのテーブルのモデルは次のようになります。
class session(models.Model):
start_time = models.IntegerField()
end_time = models.IntegerField(null=True)
def __unicode__(self):
return unicode(self.pk)
class meterdata(models.Model):
time_elapsed = models.FloatField()
volts = models.FloatField()
amps = models.FloatField()
kW = models.FloatField()
kWh = models.FloatField()
session = models.ForeignKey(session)
def __unicode__(self):
return unicode(self.session)
シミュレートされたデータを meterdata テーブルに保存しようとすると、次のエラーが発生します。
Cannot assign "5.0": "meterdata.session" must be a "session" instance
文字列、int、および float として挿入しようとしました。また、セッション テーブルに実際に作成されたセッションがあることも確信しています。この番号がセッション テーブル内の ID の 1 つを参照していることをコードが確実に理解するにはどうすればよいですか?
edit : 保存しようとしたときに呼び出されるビューは次のとおりです
@csrf_exempt
def save(request):
if request.method == 'POST':
rawdata1 = request.body
rawdata2 = json.loads(rawdata1)
for data in rawdata2:
x = meterdata(time_elapsed = data['time_elapsed'], volts = data['volts'], amps = data['amps'], kW = data['kW'], kWh = data['kWh'], session = data['session'])
x.save()
return HttpResponse(rawdata2)