我有一个模型表单,该表单将所有表单字段输入保存到后端数据库作为一个条目。我还有一个JSON文件,其中包含多个JSON对象,其字段对应于模型表单字段。该JSON文件正在通过模型中的FileField上传。最终,我希望能够将带有多个JSON对象的JSON文件上传到我的模型表单中,并使用上载的JSON文件中的相应值填充字段。每个JSON对象将是我数据库的一个条目,并且它们对于至少一个字段可以具有空值。理想情况下,我希望能够选择将哪个JSON对象(从上传的JSON文件中)加载到模型表单字段中,以最终将其保存在数据库中。我将如何实施呢?
答案 0 :(得分:0)
您可以使用django rest框架。它将提供一个发布功能和序列化器。
您将得到一些像这样的东西:
# 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())
答案 1 :(得分:0)
要将JSON字符串解压到Django模型中,您可以使用Python标准库json
包将其转换为dict
,然后使用{{1 }}:
**
顺便说一句,关于>>> 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'
here,有个不错的StackOverflow答案。