Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django python动态设置初始值以形成_Python_Django_Django Forms - Fatal编程技术网

Django python动态设置初始值以形成

Django python动态设置初始值以形成,python,django,django-forms,Python,Django,Django Forms,我正在构建一个用于库存控制的小型web服务。作为这项工作的一部分,我想填充任何库存项目的详细视图。这就是我迄今为止所做的: 类产品更新(forms.Form): 产品代码=forms.CharField( 最大长度=10, attrs={“占位符=Readonly=True” ) Name=forms.CharField(最大长度=100) Description=forms.Textarea(attrs={“Rows”:3}) price=forms.DecimalField() mini=f

我正在构建一个用于库存控制的小型web服务。作为这项工作的一部分,我想填充任何库存项目的详细视图。这就是我迄今为止所做的:

类产品更新(forms.Form):
产品代码=forms.CharField(
最大长度=10,
attrs={“占位符=Readonly=True”
)
Name=forms.CharField(最大长度=100)
Description=forms.Textarea(attrs={“Rows”:3})
price=forms.DecimalField()
mini=forms.IntegerField()
Max=forms.IntegerField()

如何向表单传递参数?

您可以通过访问request.POST访问视图中的表单数据

def actionView(request, product_id):
   product = Product.objects.get(id=product_id)
   form = ProductUpdate(request.POST, instance=product_id)
   form.save(commit=False) #Do this if you want to make changes to some value
   form.price = 112233
   updated_form = form.save()

您应该改用:

现在,您可以轻松地将模型实例传递到表单:

def some_view(request):
    instance = Product.objects.first()
    form = ProductUpdate(request.POST or None, instance=instance)
    context = {'form':form}
    return render(request, 'some_template.html', context)
def some_view(request):
    queryset = Product.objects.all()
    form = ProductFormSet(request.POST or None, queryset=queryset)
    if request.method == 'POST' and form.is_valid():
        form.save()
    context = {'form':form}
    return render(request, 'some_template.html', context)
如果要以相同的形式显示多个产品,则需要使用:

现在,在your views.py中,您可以将
QuerySet
传递给表单:

def some_view(request):
    instance = Product.objects.first()
    form = ProductUpdate(request.POST or None, instance=instance)
    context = {'form':form}
    return render(request, 'some_template.html', context)
def some_view(request):
    queryset = Product.objects.all()
    form = ProductFormSet(request.POST or None, queryset=queryset)
    if request.method == 'POST' and form.is_valid():
        form.save()
    context = {'form':form}
    return render(request, 'some_template.html', context)

如果您使用的是详细视图,那么您可能希望使用模型表单,并让django处理90%的逻辑,以便使用现有“对象”中的数据正确填充表单,而OP并不需要这些数据。这是在更改正在创建的对象,而不是基于现有DB条目显示的表单。