【问题标题】:what are standard ways to write json(coming from front end) data to models.py in Django在Django中将json(来自前端)数据写入models.py的标准方法是什么
【发布时间】:2023-03-28 18:50:01
【问题描述】:

在我的 Django 应用程序中,我需要将来自前端的 JSon 写入 models.py 中的表中。执行此操作的第一步是将 Json 转换为字典。我的问题是如何将该字典直接写入 models.py 表?如果某些字段应该写入一个表而某些字段应该写入任何其他表怎么办?有可能还是有另一种解决方案?请提出解决方案。

示例

models.py 中有两个表,分别称为 chart 和 columnChart,chart_name 和 chart_description 应该写入图表表,而 x_axis_mapping 和 y_axis_mapping 应该写入 columnChart 表。 所有字段都在一个名为 json_data 的对象中接收。 json_data 可以转换为字典。那么下一步是什么?

提前致谢。

【问题讨论】:

  • 你能发布models.py、views.py和forms.py吗?
  • 更多信息会有所帮助。这像一个导入命令吗?还是应该验证数据?如果是后者,则使用 Form 来验证并返回一个对象
  • 不管它是什么.. 只需提取 json 和标准方式到.save() 就可以了..

标签: python json django dictionary


【解决方案1】:

直接将字典写入模型表的一种简单方法是使用 python 的扩展与 django ORM

例如:

myitems = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
mymodel = MyModel(**myitems)
mymodel.save()

对于多个模型/表,您可以轻松过滤字典,然后在特定模型/表中使用它。

例如:

myitems1 = dict((k,myitems[k]) for k in ('key1',) if k in myitems)
mymodel1 = MyModel1(**myitems1)
mymodel1.save()
myitems2 = dict((k,myitems[k]) for k in ('key2', 'key3') if k in myitems)
mymodel2 = MyModel2(**myitems2)
mymodel2.save()

【讨论】:

  • 谢谢..我会试试这个..这是 create() 方法的替代方法吗?有没有办法从myitems中取出一些字段写入mymodel?例如 key1:value1 到 mymodel1,其余字段到 mymodel2?你能详细说明一下吗?
  • @PallaviKulkarni save() 和 create() 方法之间的细微差别记录在 docs
  • 我在回答中添加了多个模型的示例。
  • @PallaviKulkarni 如果它对你有用,你能接受我的回答吗?
  • @PallaviKulkarni 请问我的回答能否解决您的问题?
【解决方案2】:

我建议查看http://www.django-rest-framework.org/

该框架处理序列化、反序列化和处理各种输入类型以及构建 RESTful API。序列化器也遵循 Django 的 DRY 哲学。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2010-09-07
    • 2010-12-30
    • 1970-01-01
    • 2021-02-03
    • 2013-07-10
    • 1970-01-01
    相关资源
    最近更新 更多