我想让用户在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函数的一部分?我应该将它分开以某种方式从模型或视图中调用吗?
很抱歉,我完全迷失了,并且很难找到最佳方法的明确答案。
答案 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