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

时间:2018-06-29 23:46:50

标签: python html json django

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

2 个答案:

答案 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答案。