python - 如何在仅显示数据时禁用表单的字段,但在使用新表单输入数据时启用
问题描述
我有一个表单,用于以只读格式显示数据,您可以通过单击表中的记录并进入只读详细信息视图来完成此操作。
我还想重用相同的表单作为向表中输入数据的一种方式 - 默认情况下,我为我的只读视图禁用了所有字段,因此想在为我的插入视图生成表单时找到一种方法来覆盖它?
我想如果我将表单包装在模板中的 POST 方法中,它会以某种方式启用这些字段,但似乎不起作用
表格.py
from django import forms
class BusinessDataForm(forms.Form):
tableName = forms.CharField(strip=True, empty_value='NULL', disabled=True)
视图.py
# Django imports
from django.shortcuts import render
from django.http import HttpResponse
# Local imports
from .forms import BusinessDataForm
from .tables import ResultsTable as rt
import common.dbConnectionManager as dbc
# System imports
import sys
import pyodbc
sys.path.insert(0,'..')
pyodbc.pooling = False
def home(request):
return render(request, 'home.html')
def db_display(request):
dbo = dbc.dbConnectionManager()
query_result_as_dict = dbo.run_query('SELECT TOP 10 DataBaseName, TableName, Version, TableKind, CreatorName FROM DBC.TABLESV;')
dbo.disconnect()
table = rt(query_result_as_dict)
#tables.RequestConfig(request).configure(table)
return render(request, "db_display.html", {"table" : table})
def business_data_display(request, table_name):
dbo = dbc.dbConnectionManager()
query_result_as_dict = dbo.run_query('''SELECT DataBaseName,
TableName,
Version,
TableKind,
CreatorName
FROM DBC.TABLESV
where TableName = '{table_name}' '''.format(table_name=table_name))
form = BusinessDataForm(initial={'tableName' : query_result_as_dict[0]['TableName']})
return render(request, 'business_data_form.html', {'form' : form})
def business_data_new(request):
form = BusinessDataForm()
return render(request, 'business_data_new.html', {'form' : form})
business_data_new.html
{% extends 'base.html' %}
{% block content %}
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-success">Save</button>
</form>
{% endblock %}
到目前为止,无论如何该字段仍然处于禁用状态,有什么想法可以覆盖它吗?当我BusinessDataForm()
在我的views.py中实例化时可以完成吗?
解决方案
在将表单传递给模板之前,我设法通过添加以下内容来解决这个问题
form.fields['tableName'].disabled = False
推荐阅读
- arm - STM32F4系列ARM处理器
- javascript - 我在这段代码中遇到了错误。这个想法是计算该单词在给定段落中重复的次数
- liferay-7 - 如何在 Liferay 7.3 中为页面片段添加自定义布局
- python - 如何使用 Django 从 QuerySet 中提取特定记录?
- laravel - 在 laravel 中为推送通知创建 reactphp 套接字
- javascript - Node.js 请求等效于 jQuery AJAX .complete()
- c++ - 具有交替位的二进制数,错误答案
- ios - 在 UIKit 中实现水平滚动视图?
- r - 使用 github 操作更新包数据
- python - 尝试从 python 中的已解析文本代码创建两个 CSV 文件