django orm 更新 model 某个字段为该 model 中某个外键 mode 字段的值。
1
kingofvir OP 有 model A,model B,A.b = ForeignKey(B), 如优雅地设置 A.author = A.b.name.
|
2
kingofvir OP 自顶
|
3
mayorbryant 2019-01-25 10:07:50 +08:00
难道 A.author = A.b.name 就不优雅了吗
|
4
kingofvir OP @mayorbryant 主要是为了数据更新,这样几万条数据更新需要执行几万个 sql
|
5
banxi1988 2019-02-17 22:15:00 +08:00
根据我的理解给出一个使用纯 SQL 的解法,你可以自行翻译成 Django ORM 的写法
针对如下表结构: ```sql CREATE TABLE `author` ( `id` INTEGER, `name` TEXT, PRIMARY KEY(`id`) ); CREATE TABLE `book` ( `id` INTEGER, `name` TEXT NOT NULL, `author_id` INTEGER, `author_name` TEXT, PRIMARY KEY(`id`) ); ```` `book.author_name` 是后面加的,要填充其关联的 author 的名称可以使用如下 SQL 语句更新。 ```sql update book set author_name = (select name from author where id = author_id) ``` 经过我使用 SQLite 测试是 OK 的。 > Query executed successfully: update book set author_name = (select name from author where id = author_id) (took 0ms, 3 rows affected) |