python - Django 将动态名称属性的动态字段添加到前端,然后将其插入到模型中
问题描述
我有一个包含近 500 多个字段的模型。我想通过前端表单获取数据。但问题是我无法显示所有 500 个字段。
我想要的是我将添加我需要的字段。就像第一天一样,我将添加 3 个字段。食物 = 230 ,汽油 = 500,租金 = 700。第二天,田地可能会有所不同。我可以在第二天添加 20 个字段。第三天的数据可能属于不同的字段。比如汽油 = 200,水泥 = 5000,钢铁 = 100 等等等等!
简单的解决方案是:我将所有字段显示为 HTML 并提交给查看,并通过 Post Request 在 View 函数中接收!然后保存()。但我希望它是动态的!
if request.method == 'POST':
print("this is post")
# print()
food_expense=request.POST['food']
petrol_expense=request.POST['petrol']
easyload_expense=request.POST['easyload']
labour_expense = request.POST['labour']
equipments_expense = request.POST['equipments']
rent_expense = request.POST['rent']
cement_expense = request.POST['cement']
steel_expense = request.POST['steel']
other1_expense = request.POST['other1']
other2_expense = request.POST['other2']
other3_expense = request.POST['other3']
..... .... fields upto 500+
# expense_paidby = request.POST['paid_by']
expense_paidby_id = request.POST['paid_by']
paidby= PaidBy.objects.get(id=expense_paidby_id)
# expense_paidby = PaidBy.objects.get(name__icontains = request.POST['paid_by'])
projectname_id= request.POST['pname']
project_in_which_expenses_made=ProjectName.objects.get(id=projectname_id)
# project_in_which_expenses_made = request.POST['project_name']
date = request.POST['date']
# total = food_expense+petrol_expense+easyload_expense+labour_expense+equipments_expense+rent_expense
# print(petrol_expense, projectname_id , project_in_which_expenses_made)
inst= ProjectExpenses(food=food_expense,petrol=petrol_expense,easyload=easyload_expense ,labour=labour_expense ,
equipments=equipments_expense ,rent=rent_expense,cement=cement_expense,steel=steel_expense,
other1=other1_expense, other2=other2_expense, other3=other3_expense, date_of_expense=date, PaidByName=paidby,
expenses_in_project = project_in_which_expenses_made)
#in query i will have 500 fields.
inst.save()
我想要的是如何创建具有数据库中名称属性的动态输入字段。
我应该如何在前端动态创建这些字段,然后我将如何在视图函数中处理它,而不是通过“value = request. post[“500+ fields line by line”]”的意思是我如何只动态处理那些来查看功能的字段。然后将其保存到数据库。
数据只会插入选定的字段,所有剩余的默认为零。
我将感谢论坛帮助。
解决方案
我不确定我是否正确理解了您的问题。也许一个更简单的工作示例会澄清。
但是,您是否尝试过使用模型表单,例如 CreateView?
您可以通过将 CreateView 添加到您的 urlpatterns 来根据您的模型定义动态创建输入表单和处理。
from django.views.generic.edit import CreateView
from .models import ProjectExpenses
urlpatterns += [path("new-project-expense", CreateView.as_view(model=ProjectExpenses, fields="__all__"))]
您可以将“字段”参数配置为您的 500 个模型字段的选择。
推荐阅读
- r - 向 ggplot2 自动绘图功能添加(或覆盖)填充美学
- html - 屏幕缩小时如何使图像缩小?
- html - React Fullcallendar v5 事件定位到光标问题 [更新]
- firebase - 无法将 Storage Firebase 映像正确链接到 Cloud Firestore
- python - 关于熊猫部分字符串合并的另一个问题
- c# - 如何解决“System.NullReferenceException:'对象引用未设置为对象的实例。'”
- linux - Bash:读取 CSV 文本文件并查找行的平均值
- sql-server - SQL CASE WHEN - 返回不需要的行的 NULL 值
- shibboleth - Shibboleth:“元数据根元素未签名,需要签名”
- android - 从Play商店下载时,颤动的谷歌登录无法在发布中工作