使用服务器响应作为外键表条目?

时间:2013-07-05 15:30:56

标签: javascript python django yui

我通过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)

1 个答案:

答案 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。这是实例与非实例之间的区别。