如何填写CreateView本身中的字段

时间:2019-03-23 20:01:04

标签: python-3.7 django-2.1

我正在创建一个项目,我对此有一个疑问,因此该站点是否为django项目支持中心的支持中心,在用户填写通用表格后,该项目将为用户记录一个案例。

因此,我创建了一个模型名称Case,它具有case_number,email之类的字段。

现在,在views.py中,我正在使用CBV CreateView创建保存用户表单并创建简单的案例编号。

我被困在哪里,需要随机创建一个10位字符串字段的案例编号,但是在客户填写完表格后如何存储它?

因为字段中任何未提及的内容都会显示为客户的输入,而case_number不是我希望客户填写的内容,因此应自动生成。

我相信可以通过以下方式轻松完成:-

r2 = [random.randint(0,10),random.randint(0,10),random.randint(0,10),random.randint(0,10),random.randint(0,10) ,random.randint(0,10),random.randint(0,10),random.randint(0,10),random.randint(0,10),random.randint(0,10)]

case_number =(''.join(str(x)for r2中的x))

在CBV中,CreateView将让我随机创建一个数字并将其保存,但是我希望在后端完成此操作,所以我无法在create view中提及它,

这只是疑问,我已经尝试过了。

models.py

class Case:
    case_number = models.CharField(max_length=10)
    issue=models.TextField()
    product=models.CharField(max_field=100)

    def get_absolute_url(self):
        return reverse('case:single')

Views.py

class CaseCreation(CreateView):
    model=Case
    fields=('issue', 'product')
    r2=[random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10)]

    self.case_number = (''.join(str(x) for x in r2))

预期结果是我希望随机分配一个10位数字作为客户包装并保存在数据库中

DB是sql lite3。

1 个答案:

答案 0 :(得分:0)

好的,是为了让大家知道我终于想出了答案,

我定义了在models.py中创建案例的逻辑,如下所示。

print

现在,在views.py中,我定义了一个函数,并调用了models.py中定义的函数并保存。

def case_generation(self):
    r2=[random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10), random.randint(0,10)]
    self.case_number = (''.join(str(x) for x in r2))
    self.save()

在这之间,我定义了urls.py,以便用户生成大小写,这些函数将自己调用。

如果您有兴趣查看完整的代码,请不要担心,如有需要,请告诉我。 ;)