【问题标题】:Django: How do I call a model function in views that accesses form data and stores the result in the database?Django:如何在访问表单数据并将结果存储在数据库中的视图中调用模型函数?
【发布时间】:2016-10-30 11:30:48
【问题描述】:

我是 Django 的初学者。我正在用 Django 开发一个应用程序。我需要将表单的结果存储在数据库中,并在视图中调用一个函数,然后将该函数的结果再次存储在我的数据库中。 在 models.py 中,这是我的带有计算功能的模型类:

class f1New(models.Model):
    v1 = models.CharField(max_length=5)
    u1 = models.CharField(max_length=5)
    a1 = models.CharField(max_length=5)
    t1 = models.CharField(max_length=5)
    def calculate(v1,u1,a1,t1):
        v1 = u1 + a1

在views.py中,

def f1(request):
    context = RequestContext(request)
    if request.method == 'POST':
        form = f1Form(request.POST)
        if form.is_valid():
            form.save(commit=True)
            f1.calculate(form[v1],form[u1],form[a1],form[t1])
            return question_list(request)
        else:
            print form.errors
    else:
        print ("Not Post")
    return render_to_response('question_list.html', {'form': form}, context)

我不知道这是否正确,也不知道如何检查。 任何帮助将不胜感激。 :)

【问题讨论】:

  • 你的视图函数名和模型名是一样的。所以这个sn-p会抛出错误
  • 如果您需要通过将u1a1 相加来计算v1,那么您为什么首先接受它的形式?
  • 我需要根据用户输入框中的值执行高级计算。我只是在做一个基本的添加操作,看看它是否有效。
  • 除了这个问题中的所有无效语法之外,您认为什么是行不通的?
  • 究竟什么是无效的?

标签: python django database forms views


【解决方案1】:

我完全不知道你在这里问什么。作为 Rajesh cmets,如果 v1 总是从其他元素计算出来的,你为什么要接受它的形式呢?

有可能你在这之后:

class F1Model(models.Model):
    ...
    def calculate(self):
        self.v1 = self.u1 + self.a1

class F1Form(forms.ModelForm):
    class Meta:
        exclude = ('v1',)

def f1(request):
    if request.method == 'POST':
        form = F1Form(request.POST)
        if form.is_valid():
            f1instance = form.save(commit=False)
            f1instance.calculate()
            f1instance.save()
            return redirect('question_list')
    else:
        form = F1Form()
    return render(request, 'question_list.html', {'form': form})

但无法确定。

【讨论】:

  • 我正在用它来做一个测验。公式是 v = u + a.t,所以根据用户输入的任何值,我计算未知变量。所以我需要所有这些变量。我想显示结果或查看我正在做的事情是否有效,我该怎么做?
  • 我不明白你在问什么。您可以通过将它们的值传递给模板来显示它们。
  • 我有一个带有问题和 div 的网页。我从问题中拖动值并将其放入 div 中。使用 JS,我创建了隐藏的输入字段,这些字段存储与 div 相同的值。然后我使用页面上的提交按钮发布表单数据。现在,使用已存储在表单中的拖动值,我需要执行计算并将计算结果显示在提交按钮旁边。我的问题现在更清楚了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 2020-02-29
  • 2019-02-18
  • 1970-01-01
  • 2014-04-19
相关资源
最近更新 更多