我正在创建一个Django webapp来自动填充某个纸质表单。每个表单必须具有唯一的表单编号,该表单编号由前缀,年份和增量(每年重置)组成,例如"表格ABC-2017-0001"。我不想将这个唯一的表单编号作为主键,但Django只允许每个模型使用一个AutoField。
以下是我尝试的内容:
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.
编辑10/15/17
好的,所以经过一些工作之后,我发生了以下情况:创建一个函数来查询我们已经在数据库中存在的给定年份的对象数,向该值添加一个,然后返回一个字符串包含此信息。
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
任何人都知道为什么从表单中调用的函数无法弄清楚表单是什么?