我有一个模型表单,将所有表单字段输入保存到后端数据库作为一个条目。我还有一个JSON文件,其中包含多个JSON对象,这些对象的字段与模型表单字段相对应。这个JSON文件是通过模型中的FileField上传的。最终,我希望能够将包含多个JSON对象的JSON文件上传到我的模型表单中,并使用上传的JSON文件中的相应值填充字段。每个JSON对象都是我的数据库中的一个条目,它们至少可以有一个字段的空值。理想情况下,我希望能够选择将哪个JSON对象(来自上传的JSON文件)加载到我的模型表单域中,最终保存到我的数据库中。我该如何去实现它呢?
发布于 2018-06-30 11:33:59
要将JSON字符串解压到Django模型中,可以使用Python Standard Library json
包将其转换为dict
,然后使用**
将其作为关键字参数解压到对象中
>>> 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的很好的答案。
发布于 2018-06-30 09:18:02
您可以使用django rest框架。它将提供post函数和序列化程序。
你最终会得到一些类似这样的东西:
# 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
然后,您可以将数据提交到数据库
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())
https://stackoverflow.com/questions/51110593
复制相似问题