自动递增非pk字段,从1000开始

时间:2017-06-07 20:14:43

标签: python django

我已经在Django工作了大约一个星期,所以我对以下内容并不了解。我需要为我的模型和postgres数据库中的字段创建一个序列,从1000开始自动递增。所以它将列出如下: 1000,1001,1002等....

到目前为止,我已经研究过了,我需要扩展save函数并检查db中的前一个值。

最终结果是能够使用此模型发布到API,并且此字段会增加如上所述。

class MyModel(AuditMixin, models.Model):
    order_number = models.IntegerField(blank=False)

    def get_number(self):
        return ???

    def save(self):
        ??? .save()

1 个答案:

答案 0 :(得分:0)

  

到目前为止,我已经研究过了,我需要扩展save函数并检查db中的前一个值。

通常执行SELECT后跟基于SELECT的插入或更新对于任何RDBMS都是一个坏主意。因为这可能导致竞争条件,并且数据库内置了避免这种竞争条件的机制,并且通常更快。

Postgresql有Serial类型。它将包含在Django的下一个主要版本的django.contrib.posgres中,但是现在。像这样创建自定义迁移:

# Start of loop over filenames
   # get inode of file
   inode=$( ls -i $file | cut -d' ' -f1 )

   # If file inode does not show up in lsof, run the ftp command in the background
   lsof | grep "$inode" || ftp $file <destination> &

# End of loop

如果您之前从未创建过自定义迁移,请查看RunPython