Django models 如何创建不是Django中主键的自动递增整数字段
我正在创建一个Django Web应用程序来自动填写特定的纸质表单。每个表格必须有一个唯一的表格编号,由前缀、年份和增量(每年重置)组成,如“表格ABC-2017-0001”。我不想让这个唯一的表单号成为主键,但是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
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
有人知道为什么从表单中调用的函数不能理解表单是什么吗?该代码有太多错误。如果你还没有弄明白,或者如果有人想在这方面得到帮助,打电话给我,我会写一个很好的例子。