【发布时间】:2020-09-29 02:00:59
【问题描述】:
我在 BaseModel 中有以下函数,可以在任何地方使用。
func (d *Dummy) Save() (int64, error) {
o := orm.NewOrm()
var err error
var count int64
if d.Id == 0 {
count, err = o.Insert(d)
} else {
count, err = o.Update(d)
}
return count, err
}
我就是这样用的
d := models.Dummy{Id: 10}
d.SomeValue = "x"
d.Save()
问题是我有“d.OtherValue”已经在数据库中有值。
执行此函数后,它会更新为 0。
由于它是对所有模型都有效的通用模型函数,我该如何解决这个问题?基本上,我想在单个查询中执行此操作,就像更新/保存 Django ORM
【问题讨论】:
-
为什么
models.Dummy{Id: 10}带有'Id'(大写),而if d.id == 0 {则检查id(小写)?在这个Dummy结构中必须同时存在Id和id。如果是这样,那么id总是等于0,因为您只定义了Id -
这是错字。已编辑