【问题标题】:Django Model, Forms FieldsDjango 模型,表单字段
【发布时间】:2020-11-30 15:54:27
【问题描述】:

我在 django 表单上苦苦挣扎。 我已经创建了 model.form,它的 IntegerField 但 django 将它们作为字符串。

这是我的models.py

from django.db import models


class CircuitComponents(models.Model):
    e1 = models.IntegerField()
    r1 = models.IntegerField()
    c1 = models.IntegerField()

forms.py

from django import forms

from .models import CircuitComponents


class CircuitComponentForm(forms.ModelForm):

    class Meta:
        model = CircuitComponents
        fields = '__all__'

还有我的观点.py

from django.shortcuts import render

from .forms import CircuitComponentForm


def circuit_components_view(request):
    if request.method == 'POST':
        form = CircuitComponentForm(request.POST)

        if form.is_valid():
            form.save()
    else:
        form = CircuitComponentForm()

    e1 = request.POST.get('e1')
    c1 = request.POST.get('c1')
    r1 = request.POST.get('r1')
    context = {
        'form': form,
        'basic_circuit_result': e1 + c1 + r1
    }
    return render(request, 'basic_circuit.html', context)

还有来自应用程序的 ss。我试图对它们进行总结,但结果就像你在 ss 上看到的那样。 谁能帮我解决我没有看到的东西:D?提前致谢.. enter image description here

【问题讨论】:

  • request.POST 会将所有内容都视为字符串。它是相应地将其转换为值的形式。

标签: python django django-models django-forms django-views


【解决方案1】:

request.POST 会将所有内容都视为字符串,POST 参数始终是键值对,其中键和值都是字符串。它是相应地将其转换为值的形式。

您可以使用.cleaned_data attribute [Django-doc] 来获取由表单确定的值,因此:

def circuit_components_view(request):
    basic_circuit_result = None
    if request.method == 'POST':
        form = CircuitComponentForm(request.POST)

        if form.is_valid():
            form.save()
            basic_circuit_result = form.cleaned_data['e1'] + form..cleaned_data['e1'] + form..cleaned_data['r1']
            
    else:
        form = CircuitComponentForm()
    
    context = {
        'form': form,
        'basic_circuit_result': basic_circuit_result
    }
    return render(request, 'basic_circuit.html', context)

【讨论】:

  • 然后我在刷新页面时遇到问题,就是抛出 local variable 'basic_circuit_result' referenced before assignment 那个错误。
  • @kozmonotosman:这就是为什么你在视图顶部写basic_circuit_result = None
猜你喜欢
  • 2013-08-27
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多