我是来自python背景的Golang的新手,所以尝试了解新的和不同的概念。我正在尝试创建相关字段,然后从数据库中选择它们。
楷模:
type Company struct {
gorm.Model
Name string
}
type CreditCard struct {
gorm.Model
Number int
Company Company
CompanyId uint
}
type User struct {
gorm.Model
Name string
CreditCard CreditCard
CreditCardID uint
}
创建表和行并从数据库中选择
common.DB.AutoMigrate(
&Company{},
&CreditCard{},
&User{},
)
user := User{
Name: "Alice",
CreditCard: CreditCard{Number: 123456, Company: Company{Name: "Bank A"}},
}
common.DB.Create(&user)
var retrivedUser User
var creditCard CreditCard
var company Company
common.DB.First(&retrivedUser, 1).Related(&creditCard).Related(&company)
fmt.Println("user name", retrivedUser.Name)
fmt.Println("creditcard number", retrivedUser.CreditCard.Number)
fmt.Println("creditcard number related", creditCard.Number)
fmt.Println("company name", retrivedUser.CreditCard.Company.Name)
fmt.Println("company name related", company.Name)
打印:
user name Alice
creditcard number 0
creditcard number related 123456
company name
company name related
两个问题:
Related
creditCard作为单独的变量而不是使用点符号?invalid association []
在Related
公司上遇到错误,并且没有点符号或相关工作。我该如何取回?根据文件,你需要设置auto_preload
以true
进行自动预加载工作。因此,将检索用户的行更改为:
common.DB.Set("gorm:auto_preload", true).First(&retrivedUser, 1)
应该给您预期的结果。
On a side note, never ignore the errors. You can always append .Error
to
almost every operation in gorm
and check the returned error. For example:
err = common.DB.AutoMigrate(...).Error
if err != nil {
// handle err
}
err = common.DB.Create(&user).Error
// Check for err
err = common.DB.Set("gorm:auto_preload", true).First(&retrivedUser, 1).Error
// Check for err
问题内容: 我一直在尝试找到一种使用Golang尤其是库gorm插入和检索几何类型的方法。我还尝试使用库orb,它为几何定义了不同的类型,并提供了不同格式之间的编码/解码。 Orb 已经为每种类型实现了和方法。这使得go’s 和函数可以使用除基本类型以外的其他类型。但是,Orb期望使用以众所周知的二进制(WKB)格式表示的几何。 orb文档显示,要实现此目的,您只需将字段包装在PostGIS函数中
问题内容: 假设我有一个Author表和一个Post表,每个Author可以有多个Post。 现在,随着单SQLAlchemy的查询,我想我所有的活跃作者和最近发布的帖子为每个。 我一直在尝试通过获取子列表来加入作者的工作列表,使用子查询将结果分组在一起,如下所示: 但是,如果我有两个来自同一发布日期的Author帖子,而这些帖子是最新的Posts,则意味着我得到那个Author在我的结果列表中出
我很难理解Django ORM中的和。我有以下型号: 现在我的views.py: 但是现在,每次for循环迭代时,它都会访问数据库3次。我试图提高时间复杂度——现在是3N 2,N是城市的数量,但是我不能理解select_related和prefetch_related。 你能给我一个例子,我该如何改进它,使它不会在for循环中命中数据库3次吗?
我首先尝试了用户图,但是由于我们要获取组,所以我尝试了组图。同样的例外。 问题是,没有简单的方法向生成的查询添加,因为我不知道应该加入关联的哪些属性。我必须加载Entitygraph,遍历它和任何子图,并生成正确的join子句。 关于查询生成的更多细节: queryException:查询指定了连接提取,但是提取的关联的所有者不在选择列表中
问题内容: 对此不熟悉,尝试按照著名的Flask教程使用Flask-bootstrap,Flask-wtforms,Jinja等构建一个应用程序 我有一个带有2个选择字段和一个按钮的表单。 我只希望第一个字段预先填充,而另一个字段根据前一个字段的选定值填充(在客户端?)。 在模板中,我尝试类似 可以正常工作(只要我返回元组列表以使用正确的javascript和路由填充下一个字段),但我想要以下内容
我正在寻找一种方法来找出用jQuery选择了哪个字段。我构建了一个函数,但它不起作用。 JS函数 在jsfiddle开放链接中测试