如何在python中重新保存具有多个值的字典键?

时间:2019-03-16 14:31:32

标签: python django django-models sqlite

{
 "캡틴마블": ["20018348", "81533"], 
 "이스케이프룸": ["20018925", "81654"], 
 "돈": ["20018920", "81651"], 
 "라스트미션": ["20018934", "81658"], 
 "우상": ["20018907", "81650"],
}

我已经获取了电影数据,并如上所述保存了数据(作为字典)。 我想将它们保存到我的Django项目中,但是下面的代码对我不起作用。

if __name__=='__main__':
    movie_data_dict = data #like above format Json file
    for t, m in movie_data_dict.items():
         MovieData(title=t, movie_cd=m[0], movie_idx=m[1]).save()

class MovieData(models.Model):
    title = models.CharField(max_length=20)
    movie_cd = models.IntegerField
    movie_idx = models.IntegerField

抛出的错误是:

sqlite3.OperationalError: table parsed_data_movie_data has no column movie_idx
...
...
django.db.utils.OperationalError: table parsed_data_movie_data has no column movie_idx

Full error trace

移民后的另一个错误

Traceback (most recent call last):
  File "NameParser.py", line 48, in <module>
    MovieData(title=t, movie_cd=m[0], movie_idx=m[1] ).save()
  File "C:\Python\Python37\lib\site-packages\django\db\models\base.py", line 485, in __init__
    raise TypeError("'%s' is an invalid keyword argument for this function" % kwarg)
TypeError: 'movie_cd' is an invalid keyword argument for this function

2 个答案:

答案 0 :(得分:0)

我怀疑您已经拥有初始化的数据库之后,将属性movie_idx添加到了MovieData中。这样做时,需要运行manage.py -makemigrations,然后运行manage.py -migrate(在服务器未运行时),以将新属性添加到SQL表中。

答案 1 :(得分:0)

您的字段设置不正确。 Django当前期望列表中的值是<?php get_header(); ?> 类型。您需要使用IntegerField或将期望字段更改为movie_cd=int(m[0]), movie_idx=int(m[1])