0

我通过 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 和浮点数插入。我也确信会话表中实际上创建了一个会话。我如何确保代码理解这个数字是指会话表中的一个 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)
4

1 回答 1

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. 这是实例和非实例之间的区别。

于 2013-07-11T02:11:39.973 回答