我创建了旅行(很像产品)为我的网站,我想让一个管理员来改变一些有关这些信息。所以我创建了一个表格来改变信息。但我希望该表格是预先填写的实际信息,使管理员只需改变他想改变的。
我一直在尝试不同的方法,但从来没有成功。
这是我的表格:
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>
我试过这种观点:
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)
我试过这种观点:
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)
1条答案
按热度按时间l7wslrjt1#
你可以为你的网站使用模板,这比基于函数的视图要容易得多: