Python 如何在Django中将表单的初始值设置为html或模板语言?
我有这个表单,其中我将Python 如何在Django中将表单的初始值设置为html或模板语言?,python,django,django-forms,Python,Django,Django Forms,我有这个表单,其中我将MyField值设置为不可编辑,这样就可以将其发送到我的数据库,而无需用户编辑。我希望从数据库中检索默认值 基本上,每个页面都是一个项目。所有项目都存储在我的数据库的市场表中。每个项目都有相应的页面:http://127.0.0.1:8000/market/item/。在表单中,我需要将项值发送到数据库,而不需要用户编辑 class MyForm(forms.ModelForm): MyField = forms.CharField( initia
MyField
值设置为不可编辑,这样就可以将其发送到我的数据库,而无需用户编辑。我希望从数据库中检索默认值
基本上,每个页面都是一个项目
。所有项目
都存储在我的数据库的市场
表中。每个项目都有相应的页面:http://127.0.0.1:8000/market/item/
。在表单中,我需要将项
值发送到数据库,而不需要用户编辑
class MyForm(forms.ModelForm):
MyField = forms.CharField(
initial="{{market.item}}",
disabled=True,
widget=forms.TextInput)
观点:
def myview(request):
item = get_object_or_404(market, item=item)
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
send = form.save()
send.save()
messages.success(request, f"Success")
else:
form = MyForm()
return render(request,
"main/mytemplate.html",
context={"form":form})
我想这里有些混乱 您可以按如下方式进行设置:
class MyForm(forms.ModelForm):
MyField = forms.CharField(
default="909",
editable=False,
widget=forms.TextInput)
这将阻止该字段被编辑,并且默认值为909
我不清楚这是否完全回答了您的问题,因为我不确定我是否完全理解您想要做什么。因此,这样做的方法是根本不将其作为表单的一部分
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
exclude = ['MyField']
现在将其设置为“保存”:
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
send = form.save(commit=False)
send.MyField = market.item
send.save()
messages.success(request, f"Success")
return redirect('/') # always redirect after a successful post
您可以这样尝试:
def myview(request,item):
item = get_object_or_404(market, item=item)
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
send = form.save(commit=False)
send.MyField = item
send.save()
messages.success(request, f"Success")
return redirect('redirect where you want')
else:
form = MyForm()
return render(request,
"main/mytemplate.html",
context={"form":form})
这里有一些误解。但主要是,如果您不希望用户编辑该值,为什么要将其放入表单中?我认为您可以在表单中为字段指定默认值model@DanielRoseman基本上是因为我不知道如何以其他方式做到这一点。我不能在模型中这样做,因为初始值取决于用户登陆的页面,而它不是一个固定值,这就是为什么要在视图中这样做。显示视图代码。并解释“价值”到底应该是什么。我编辑了这个问题,我希望现在更容易理解!我编辑了这个问题,我希望现在更容易理解,我知道这听起来有点复杂,我理解!只有一件事,排除部分是用来做什么的?