【问题标题】:set minimum primary key for saving django models in database设置用于在数据库中保存 django 模型的最小主键
【发布时间】:2013-06-13 10:26:33
【问题描述】:

我是 Django 新手。我有两个模型,Model A 和一个新的 Model B

class A:
    firstname=models.CharField(max_length=20,blank=True,null=True)
    email = models.EmailField(max_length=30,blank=True,null=True)

我必须将所有数据从 A 迁移到 B,以便 模型 A 中条目的主键与模型 B 中的主键相同。即

b.id = a.id 其中 a 和 b 分别是 A 和 B 的实例。

但在此之后,当我 保存一个新实例时,生成的 id 为 5L、6L 等。而不是增加创建的最后一个对象的主键。有没有什么办法解决这一问题 ?? 我正在使用 django 1.3 和 postgresql 9.2。

【问题讨论】:

  • 为什么不用sql把数据从A表转储到B表。
  • 您需要在数据库中通过设置相关序列来执行此操作。我对 Postgres 了解不多,无法给出正确答案,但它会在文档中(postgresql.org/docs/9.2/static/sql-altersequence.html 看起来很有希望)。
  • @Daniel Roseman:谢谢。它是在我的 db shell 中完成的。
  • @AnshJ :我不是 sql 专家,所以不知道如何通过上述技术实现。

标签: django django-models primary-key postgresql-9.2


【解决方案1】:

您可以使用插入命令将数据从表 A 复制到 B 例如:

INSERT INTO A (id, firstname, email) SELECT b.id, b.firstname, b.email FROM B b;

希望这会对你有所帮助。

【讨论】:

  • 这很好用....还有一件事我想问... 模型 A 一直是某些模型(如 G、H、J)的外键。我可以用 B 代替 A。
  • 他们是关于 stackover flow 的一个类似问题(更新 forignkey 约束)看看它...stackoverflow.com/questions/11073706/…
猜你喜欢
  • 2013-09-02
  • 2017-06-10
  • 2014-02-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 2020-07-11
  • 2017-12-27
相关资源
最近更新 更多