我正在嘗試存儲速度測試的時間列表。所有時間都在客戶端序列化并通過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'] = 1results[0]['value'] = 0.539results[1]['key'] = 2results[1]['value'] = 0.654results[2]['key'] = 3results[2]['value'] = 0.426.........results[100+]...我正在嘗試遍歷所有t1 - t100+值并將它們添加到我的模型對象中。即一個循環:speed_test.t1 = 0.539speed_test.t2 = 0.654speed_test.t3 = 0.426...etc這些生產線不起作用。key = "t"+str(result['key'])speed_test.key = value這樣做的正確方法是什么?
2 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
這是在不同上下文中回答的問題如何按名稱設置 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'] = 1
results[0]['value'] = 0.539
results[1]['key'] = 2
results[1]['value'] = 0.654
results[2]['key'] = 2
results[2]['value'] = 0.426
第三個結果真的會覆蓋第二個結果嗎?
希望這可以幫助。
添加回答
舉報
0/150
提交
取消