【问题标题】:How to re-save a dictionary key with multiple values in python?如何在python中重新保存具有多个值的字典键?
【发布时间】:2019-03-16 14:31:32
【问题描述】:
{
 "캡틴마블": ["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

makemigrations 后的另一个错误

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

【问题讨论】:

  • 您的代码中有错字。第三行应该是items() 而不是itmes()。这是你的问题吗?你得到什么输出,你期望什么输出?
  • 我编辑它们。我想将第二个值保存到 movie_idx。但是That's items format不能保存超过2个
  • 你不能保存超过 2 个是什么意思?您当前是收到错误消息还是只是没有得到您想要的输出?
  • 感谢您把英文句子整理得井井有条。附上一张有错误的图片。
  • 你跑过manage.py -makemigrations然后manage.py -migrate吗?

标签: python django django-models sqlite


【解决方案1】:

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

【讨论】:

  • movie_cd=int(m[0]) 同样的错误,但CharField 做得很好。谢谢!语法很重要....我为此浪费了3个小时ㅠㅠ
【解决方案2】:

我怀疑您在已经初始化数据库之后将属性movie_idx 添加到MovieData。执行此操作时,您需要运行 manage.py -makemigrations,然后运行 ​​manage.py -migrate(在服务器未运行时)将新属性添加到 SQL 表中。

【讨论】:

  • 谢谢。我不知道我必须这样做。但是又出现了一个错误,Output2
  • @JackMoody @handras 我认为movie_cd=m[0], movie_idx=m[1] 这个索引编号有问题。有适合我的方法吗?我找不到
猜你喜欢
  • 2011-06-09
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多