3

我在 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

我的问题是,在数据库(Postgres)中,连接到的序列的名称与jidDjangojournals_general_jid_seq预期的不同,但它具有不同的名称。

有没有办法指定 Django 必须使用哪个序列AutoField?在我阅读的文档中,我找不到答案。

4

2 回答 2

2

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

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

编辑:

实际上,上面的那个链接有一个来自 HM 的评论,它有一个比补丁本身更好的解决方案。该补丁很旧,我不确定它是否适用于您正在使用的 Django 版本。

于 2010-03-25T14:23:08.900 回答
1

Django 中的这个补丁怎么样:http: //code.djangoproject.com/ticket/8901?你真的需要序列的名称吗?从 8.2 版开始,PostgreSQL 具有 RETURNING,您可以在 INSERT(以及 UPDATE 和 DELETE)中使用它来获取创建的 id:

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

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

于 2010-03-25T14:28:14.040 回答