猿问

如何手动填充 Django 模型数据以进行插入

我正在尝试存储速度测试的时间列表。


所有时间都在客户端序列化并通过ajax发送到服务器。


模型:


class SpeedTest(models.Model):

    t1 = models.DecimalField(max_digits=9, decimal_places=6, default=None, blank=True, null=True)

    t2 = models.DecimalField(max_digits=9, decimal_places=6, default=None, blank=True, null=True)

    t3 = models.DecimalField(max_digits=9, decimal_places=6, default=None, blank=True, null=True)

    ...

    ...

    ...

    t100+ = ...

看法:


def save(request):

    results = json.loads(request.POST.get('results'))


    speed_test = SpeedTest.objects.create()


    for result in results:

        key = "t"+str(result['key'])

        speed_test.key = value


    speed_test.save()

哪里results有表格:


results[0]['key'] = 1

results[0]['value'] = 0.539

results[1]['key'] = 2

results[1]['value'] = 0.654

results[2]['key'] = 3

results[2]['value'] = 0.426

...

...

...

results[100+]...

我正在尝试遍历所有t1 - t100+值并将它们添加到我的模型对象中。即一个循环:


speed_test.t1 = 0.539

speed_test.t2 = 0.654

speed_test.t3 = 0.426

...

etc

这些生产线不起作用。


key = "t"+str(result['key'])

speed_test.key = value

这样做的正确方法是什么?


呼啦一阵风
浏览 220回答 2
2回答

梵蒂冈之花

这是在不同上下文中回答的问题如何按名称设置 django 模型字段?.进一步解释一下,并以您的代码为例:通过key = "t"+str(result['key']),构造 Fieldname通过设置所需的值 setattr(speed_test, key, result['value'])在循环之后,不要忘记调用speed_test.save().个人推荐之一:如果您期待更多与 AJAX/JSON 相关的工作,您可能需要考虑Django-REST-Framework,因为它的 Serializer 可以很好地处理简单/扁平案例(您当前的问题属于此类)。注意:在您给定的示例数据中results[0]['key'] = 1results[0]['value'] = 0.539results[1]['key'] = 2results[1]['value'] = 0.654results[2]['key'] = 2results[2]['value'] = 0.426第三个结果真的会覆盖第二个结果吗?希望这可以帮助。
随时随地看视频慕课网APP

相关分类

Python
我要回答