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基本上是因为我不知道如何以其他方式做到这一点。我不能在模型中这样做,因为初始值取决于用户登陆的页面,而它不是一个固定值,这就是为什么要在视图中这样做。显示视图代码。并解释“价值”到底应该是什么。我编辑了这个问题,我希望现在更容易理解!我编辑了这个问题,我希望现在更容易理解,我知道这听起来有点复杂,我理解!只有一件事,排除部分是用来做什么的?