首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python/Django:使用导入的JSON文件中的值填充模型表单字段

Python/Django:使用导入的JSON文件中的值填充模型表单字段
EN

Stack Overflow用户
提问于 2018-06-30 07:46:50
回答 2查看 955关注 0票数 0

我有一个模型表单,将所有表单字段输入保存到后端数据库作为一个条目。我还有一个JSON文件,其中包含多个JSON对象,这些对象的字段与模型表单字段相对应。这个JSON文件是通过模型中的FileField上传的。最终,我希望能够将包含多个JSON对象的JSON文件上传到我的模型表单中,并使用上传的JSON文件中的相应值填充字段。每个JSON对象都是我的数据库中的一个条目,它们至少可以有一个字段的空值。理想情况下,我希望能够选择将哪个JSON对象(来自上传的JSON文件)加载到我的模型表单域中,最终保存到我的数据库中。我该如何去实现它呢?

EN

回答 2

Stack Overflow用户

发布于 2018-06-30 11:33:59

要将JSON字符串解压到Django模型中,可以使用Python Standard Library json包将其转换为dict,然后使用**将其作为关键字参数解压到对象中

代码语言:javascript
复制
>>> from user.models import User
>>> import json
>>> some_json = '{"username": "cole","password": "testing123"}'
>>> User(**json.loads(some_json))
<User: cole>
>>> User(**json.loads(some_json)).username
'cole'
>>> User(**json.loads(some_json)).password
'testing123'

顺便说一下,StackOverflow上有一个关于** here的很好的答案。

票数 1
EN

Stack Overflow用户

发布于 2018-06-30 09:18:02

您可以使用django rest框架。它将提供post函数和序列化程序。

你最终会得到一些类似这样的东西:

代码语言:javascript
复制
# the model
class Book(Model):
    title = TextField()
    author = TextField()

# the serializer
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'

# the view
class BookView(generics.ListCreateApiView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

有关详细信息,请参阅教程:http://www.django-rest-framework.org/tutorial/1-serialization/#tutorial-1-serialization

然后,您可以将数据提交到数据库

代码语言:javascript
复制
data = [{'title': 'Moby Dick', 'author': 'Herman Melville'},
    {'title': 'A Game of Thrones', 'author': 'George R. R. Martin'}]
for d in data:
    r = requests.post('django_api_url/book/', d)
    r.raise_for_status()
    # the new record is returned if successful
    print(r.json())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51110593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档