如何在Django

时间:2017-10-04 15:42:47

标签: django-models

我正在创建一个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

任何人都知道为什么从表单中调用的函数无法弄清楚表单是什么?

0 个答案:

没有答案