从中计算模型域

时间:2017-03-04 21:50:52

标签: django django-forms django-views

我想让用户在CreateView内的单个字段中查询单件数据,并从该字段计算剩余模型字段的值。

因此,我不是要求他们提供所有数据,而是只要求一件事并计算其余数据。

一个基本的例子:

Model.py

class EggCount(models.Model):
    crates = models.IntegerField()
    cartons = models.IntegerField()
    eggs = models.IntegerField()

Views.py

class EggCountCreateView(generic.CreateView):
    model = models.EggCount
    fields = ['crates']
    template_name = 'egg_form.html'

我想用来填写模型中“纸箱”和“鸡蛋”字段的相关数学。

cartons = crates * 50
eggs = cartons * 12

这个数学在Django中的位置是什么?在模型中?作为视图中form_valid函数的一部分?我应该将它分开以某种方式从模型或视图中调用吗?

很抱歉,我完全迷失了,并且很难找到最佳方法的明确答案。

2 个答案:

答案 0 :(得分:0)

您可以在egg_form.html

中使用隐藏的表单字段

<input type="hidden" name="cartons" value=""> <input type="hidden" name="eggs" value="">

并使用javascript / jQuery执行计算并将结果存储在value属性中。

答案 1 :(得分:0)

在没有看到其余代码的情况下,我认为您需要做这样的事情,将数学函数放在模型中,然后从视图中调用它们,然后随意执行任何操作:

models.py

class EggCount(models.Model):
    crates = models.IntegerField()
    cartons = models.IntegerField()
    eggs = models.IntegerField()

    def cartons(self):
        cartons = self.crates * 50

    def eggs(self):
        eggs = self.cartons * 12

views.py

class EggCountCreateView(generic.CreateView):
    model = models.EggCount
    fields = ['crates']
    templates_name = 'egg_form.html'
    # call the functions within the view
    cartons = model.cartons()
    eggs = model.eggs()
    #then you can do something with the results