我找到this handy answer关于如何使用字典创建新表条目。
现在我想使用相同的方法更新条目。但我不知道如何解决我想要更新的特定表条目。
我当前的版本如下:
entries = Fruit.select().order_by(Fruit.name.desc())
#... all entries are listed with the index number
entry_index = int(input("Please enter entry number: "))
#...
entry_index -= 1
name = "Banana"
color = "yellow"
if input('Update entry? [Yn] ').lower() != 'n':
entries[entry_index].name = name
entries[entry_index].color = color
正如你所看到的那样,我明确地说明了每个领域。 我想将变量(名称,颜色)放在字典中,并使用前面提到的双星快捷方式like in this answer更新位置“entry_index”的条目。 但我找不到proper method in the docs。
有谁知道如何实现这一目标?
感谢您的帮助!
莫夫
答案 0 :(得分:4)
双星快捷方式是一个python的东西。它允许您将字典扩展为方法中的关键字参数。这意味着你可以这样做:
fruit = { "name": "Banana", "color": "yellow"}
some_method(**fruit)
这将是平等的做法:
some_method(name="Banana", color="yellow")
我不认为这对你有帮助。您已经更新了所选条目的值,接下来需要做的就是保存它们。
http://www11.0zz0.com/2016/09/03/23/355831822.png,一旦创建了实例,任何对save的调用都将导致该实例更新。这意味着您只需要调用save
方法来更新您已更改的值。如果您添加最终entries[entry_index].save()
,则应该保留这些更改。
答案 1 :(得分:2)
要更新对象,您可以:
entry = entries_index[idx]
entry.something = 'new value'
entry.another_thing = 'another thing'
entry.save()
可替换地:
Entry.update(**{'something': 'new value', 'another_thing': 'another'}).where(Entry.id == entry.id).execute()
所有这些都包含在文档中,请仔细阅读。按照快速开始一步一步,我想你会更清楚地了解如何使用小便。