我通过Y.io命令存储服务器响应,其成功结果如下:
on: {
success: function (requestId, response){
sess_id = parseInt(response.responseText);
buildtable();
}
}
buildtable()创建模拟数据并使用sess_id变量填充标记为session的列。这样,每个模拟数据读取都与会话相关联。我对这两个表的模型如下所示:
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?
修改: 以下是尝试保存时调用的视图
@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)
答案 0 :(得分:1)
让我猜猜你输入的值是会话ID,这就是系统告诉你Cannot assign "5.0": "meterdata.session" must be a "session" instance
的原因。如果出现此问题,请告知instance
,只需在变量中添加id
即可使其与您的值session_id
相等。
其他解决方案,以便您不会收到instance
错误,请勿使用该ID。
实施例
<select>
{% for session in sessions %}
<option value="{{ session }}">{{ session }}</option>
{% endfor %}
</select>
正如您所注意到的,我没有使用session.id而是使用session only
。这是实例与非实例之间的区别。