Django models 如何创建不是Django中主键的自动递增整数字段

Django models 如何创建不是Django中主键的自动递增整数字段,django-models,Django Models,我正在创建一个Django Web应用程序来自动填写特定的纸质表单。每个表格必须有一个唯一的表格编号,由前缀、年份和增量(每年重置)组成,如“表格ABC-2017-0001”。我不想让这个唯一的表单号成为主键,但是Django只允许每个模型有一个自动字段 以下是我尝试过的: class Form(models.Model): prefix = 'ABC' year = models.CharField(max_length=4) increment = models.Au

我正在创建一个Django Web应用程序来自动填写特定的纸质表单。每个表格必须有一个唯一的表格编号,由前缀、年份和增量(每年重置)组成,如“表格ABC-2017-0001”。我不想让这个唯一的表单号成为主键,但是Django只允许每个模型有一个自动字段

以下是我尝试过的:

class Form(models.Model):
    prefix = 'ABC'
    year = models.CharField(max_length=4)
    increment = models.AutoField(primary_key = False)
    form_number= prefix + '-' year + '-' increment
Django说:

AssertionError: A model can't have more than one AutoField.
编辑2017年10月15日

好的,在做了更多的工作之后,我想到了以下几点:创建一个函数,查询给定年份数据库中已有多少个对象,向值中添加一个,然后返回一个包含此信息的字符串

class Form(models.Model):  

    year = models.CharField(max_length=4)
    form_number = get_form_number(year)

    def get_form_number(year):
        prefix = 'ABC' 
        increment = Form.objects.filter(year = year).count() + 1
        form_number = prefix + '-' + str(year) + '-' + str(increment).zfill(4)
        return form_number
不幸的是,这样的代码给了我

NameError: name 'Form' is not defined

有人知道为什么从表单中调用的函数不能理解表单是什么吗?

该代码有太多错误。如果你还没有弄明白,或者如果有人想在这方面得到帮助,打电话给我,我会写一个很好的例子。