代码之家  ›  专栏  ›  技术社区  ›  Giovanni Di Milia

django+postgres:如何为字段指定序列

  •  2
  • Giovanni Di Milia  · 技术社区  · 14 年前

    我在Django有这个模型:

    class JournalsGeneral(models.Model):
        jid = models.AutoField(primary_key=True)
        code = models.CharField("Code", max_length=50)
        name = models.CharField("Name", max_length=2000)
        url = models.URLField("Journal Web Site", max_length=2000, blank=True)
        online = models.BooleanField("Online?")
        active = models.BooleanField("Active?")
        class Meta:
            db_table = u'journals_general'
            verbose_name = "Journal General"
            ordering = ['code']
        def __unicode__(self):
            return self.name
    

    我的问题是在db(postgres)中连接到 jid 不是 journals_general_jid_seq 正如Django所期望的,但它有一个不同的名字。

    是否有方法指定django必须使用哪个序列 AutoField ?在我读到的文件中,我找不到答案。

    2 回复  |  直到 14 年前
        1
  •  1
  •   cethegeek    14 年前

    我不这么认为,但有一张票是开着的(可能有一个有用的补丁?):

    http://code.djangoproject.com/ticket/1946

    编辑:

    实际上,上面的链接有一个hm对线程的评论,它提供了比补丁本身更好的解决方案。这个补丁是旧的,我不确定它是否适用于您正在使用的django版本。

        2
  •  1
  •   Frank Heikens    14 年前

    Django的这个补丁呢: http://code.djangoproject.com/ticket/8901 ?你真的需要这个序列的名字吗?从8.2版开始,postgresql返回了可在insert(以及update和delete)中使用的ID,该ID可用于获取创建的ID:

    INSERT INTO foo(bar) VALUES('John') RETURNING id;
    

    我不知道django是否能处理这个问题(获取插入结果),但这是一件好事,而且对性能也有好处。