Django错了请求.POST属性值已保存

2024-09-26 18:06:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了代码保存的问题请求.POST['name']值到假设。名称字段,但在本例中仅为列表中的最后一个值,即“B”。我如何让它根据各自的表单将前缀“A”和“B”保存到数据库字段名中。当我调试时,我看到键“name”的“A”和“B”。在

视图.py

from django.shortcuts import render
from .forms import modelformset_factory, AssumptionsForm
from .models import Assumptions
from django.core.exceptions import ValidationError


model_names = ['A', 'B']

def get_assumptions(request):

    AssumptionFormset = modelformset_factory(
    Assumptions, form=AssumptionsForm, extra=5)

    if request.method == 'POST':



        formsets = [AssumptionFormset(request.POST, prefix=thing) for thing in model_names]

        if all([formset.is_valid() for formset in formsets]):

            for formset in formsets:

                for form in formset:

                    assumption_data = form.save(commit=False)
                    assumption_data.Name = request.POST.get('name')
                    assumption_data.save()   



    else:

        formsets = [AssumptionFormset(prefix=thing) for thing in model_names]

    return render(request, 'assumptions.html', {'formsets': formsets})

假设.html

^{pr2}$

模型.py

from django.db import models
from django.forms import ModelForm

class Assumptions(models.Model):

    Worst = models.FloatField(null=True, blank=True, default=None)
    Base = models.FloatField(null=True, blank=True, default=None)
    Best = models.FloatField(null=True, blank=True, default=None)
    Name = models.TextField(null=True, blank=True, default=None)

表单.py

from django import forms
from django.forms import modelformset_factory, ModelForm
from .models import Assumptions

class AssumptionsForm(ModelForm):

    class Meta:
        model = Assumptions
        fields = '__all__'
        exclude = ['Name']

Tags: djangoinfromimporttrueformodelmodels

热门问题