Django数据库预填充表单问题:产品修改表单无法自动填充数据
Django表单无法预填充现有数据问题
我给网站创建了类产品的Travels(旅行项目),需要让管理员能修改这些项目的信息,因此制作了一个信息修改表单。要求表单能预填充当前的现有数据,方便管理员仅修改需要变更的内容,但尝试了多种方法均未成功。
表单代码
class ModifProduct(forms.ModelForm): class Meta : model = Product fields = ['price', 'description','date','display'] widget = { 'price': forms.NumberInput(), 'description': forms.Textarea(), 'date': forms.DateInput(), 'display': forms.CheckboxInput(), }
视图代码
def update_product(request, id): prod = Product.objects.get(pk=id) if request.method == 'POST': fm = ModifProduct(request.POST, instance=prod) if fm.is_valid(): fm.save() return redirect("/accueil/gestion/") else: fm = ModifProduct(instance=prod) context = { 'form': fm, } return render(request, 'accueil/update_product.html', context)
模板代码
<form action="" method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" class="btn btn-success" value="Modifier"> </form>
访问页面的按钮代码
<form action="{% url 'update_product' prod.id %}" method="POST"> {% csrf_token %} <input type="submit" class="btn btn-warning btn-sm" value="Modifier"> </form>
尝试过的视图写法1
def update_product(request, id): prod = Product.objects.get(pk=id) if request.method == 'POST': fm = ModifProduct(request.POST, instance=prod) if fm.is_valid(): fm.save() return redirect("/accueil/gestion/") else: fm = ModifProduct(instance=prod, initial={'price': prod.price, 'description': prod.description, 'date': prod.date, 'display': prod.display}) context = { 'form': fm, } return render(request, 'accueil/update_product.html', context)
尝试过的视图写法2
def update_product(request, id): prod = Product.objects.get(pk=id) if request.method == 'POST': fm = ModifProduct(request.POST, instance=prod) if fm.is_valid(): fm.save() return redirect("/accueil/gestion/") else: fm = ModifProduct(instance=prod) fm.fields['price'].initial = prod.price fm.fields['description'].initial = prod.description fm.fields['date'].initial = prod.date fm.fields['display'].initial = prod.display context = { 'form': fm, } return render(request, 'accueil/update_product.html', context)
内容的提问来源于stack exchange,提问作者P3ps
相关产品推荐
相关产品推荐

