嗨,我需要一个扩展和折叠功能的表.在线找到的代码大多数是for,然后在js中为这个tr类定义一个函数.
但我的情况比图片更复杂.单击"参数1"后,它将展开并显示合并的单元格和2个单元格.
那么在这种情况下,我该如何实现这个功能呢?提前致谢.
附件是用于测试的表的简单片段:
https://jsfiddle.net/knspgwkq/
测试表的html
<table width="200" border="1">
<tr>
<td rowspan="5">Summary 1</td>
<td colspan="2"><div align="center">1 st level</div></td>
</tr>
<tr>
<td colspan="2"><div class="P1">Parameter 1</div></td>
</tr>
<tr>
<td rowspan="2">Sub level-1 </td>
<td>Sub parameter (1)</td>
</tr>
<tr>
<td>Sub parameter (2)</td>
</tr>
<tr>
<td colspan="2"><div class="P2">Parameter 2</div></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
JS
$('.P1').click(function(){
$(this).find('span').text(function(_, value){return value=='-'?'+':'-'});
$(this).nextUntil('.P2').slideToggle(100, function(){
});
});
Run Code Online (Sandbox Code Playgroud) 重定向到结果页面时出现此错误.是因为在重定向页面中,"POST.get"函数无法获取用户在重定向之前在表单中输入的内容吗?
views.py
class InputFormView(FormView):
template_name = 'inputform.html'
form_class = InputForm
def get_success_url(self):
return ''.join(
[
reverse('result'),
'?company=',self.request.POST.get('company'),
'®ion=',self.request.POST.get('region') <is there anything wrong here---?
]
)
class ReulstView(FormView):
context_object_name = 'result_list'
template_name = 'result_list.html'
model = Result
if form.is_valid():
company = form.cleaned_data['company']
region = form.cleaned_data['region']
self.queryset=Result.objects.filter(region=region)
return render(request, 'result_list.html', {'form': form})
def get_context_data(self, **kwargs):
context = super(ReulstView, self).get_context_data(**kwargs)
context["sales"] = self.get_queryset().aggregate(Sum('sales'))
context["company"] = self.request.POST.get("company")
context["region"] = self.request.POST.get("region")
return context
def get_queryset(self):
return Result.objects.all()
Run Code Online (Sandbox Code Playgroud)
追溯:
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\core\handlers\base.py" in get_response
132. response = …
Run Code Online (Sandbox Code Playgroud) 我遇到的问题是我在不同的div上分别制作了一张桌子和一些箭头.但是,如果我更改浏览器或放大页面,那些div不能同时移动并变大或变小.
目前我正在做的是建造一张大桌子.在这个大表内,有许多小表:对于每一行的块,它是一个表,所以有多少行有多少个表.箭头在一个新的div中,它的位置是"绝对的",我改变左/上位置来调整它的位置.
有人建议我怎么能解决这个问题,提前谢谢.
<html>
<head>
<title>Dupont Model</title>
<style type="text/css">
.table { //for tables
position: absolute;
width: 633px;
height: 309px;
left: 0px;
top: -35px;
}
.NetMarginArrow {
Position: absolute;
width: 180px;
height: 115px;
left: 428px;
top: 166px;
}
<------each arrow is asigned with a div class--->
</style>
</head>
<body>
<h3> Model</h3>
<div class="table"> <!--for tables (each block)-->
<table style border="0" cellpadding="0">
<!---a big table contains many small tables---->
<td><table border="0" cellspacing="10" cellpadding="10">
<tr><td bgcolor="#C4E1FF"><b>Net Profit</b></td><td></td></tr>
<tr>
<td bgcolor="#F0F0F0"> {{net_profit}}</td> …
Run Code Online (Sandbox Code Playgroud) excel就像左边的图片有3列.
当插入数据库时,我需要手动添加2列,如右图所示,最后在数据库中共插入5列.这些2个附加列信息从其他数据库中获取.
另一个功能是,如果已有文件,新上传的文件将覆盖现有文件.[下面的views.py中的片段]
我已经尝试了两个3方工具,但没有工作,所以也许只是使用django中嵌入的工具更好.
版本:Python 2.7.Excel 2013. Django1.8.
任何帮助都非常感谢.Hope可以提供有关如何附加这两列的详细信息片段:
uploader = request.session['uploader']
Date=request.session['date']
Run Code Online (Sandbox Code Playgroud)
forms.py
from django.core.files.storage import FileSystemStorage
from financialdata.storage import OverwriteStorage
class XXXXDataForm(forms.Form):
XXXXfile=forms.FileField(label='Select a file')
Run Code Online (Sandbox Code Playgroud)
views.py
from django.core.files.storage import FileSystemStorage
def import_data(request):
if request.method == "POST":
form = XXXXForm(request.POST,request.FILES)
if form.is_valid():
newdoc= XXXX(docfile=request.FILES['docfile'])
newdoc.save()
return HttpResponseRedirect(reverse('homepage'))
else:
return HttpResponseBadRequest()
else:
form = XXXXForm()
return render_to_response(
'dataentry.html',
{
'form': form,
'title': 'Import excel data into database example',
'header': 'Please upload XXXX.xlsx:',
'message': 'File Saved!'
},
context_instance=RequestContext(request))
<!--How can I …
Run Code Online (Sandbox Code Playgroud) 我很感谢下面的答案,但很抱歉,我仍然没有解决这个问题,也许我没有正确理解它们.因此,我为此付了一笔赏金,以便更清楚地回答.
用户在表单中输入一些信息后,这些信息作为查询来过滤数据库以获得结果,如果数据库中没有相应的记录,我怎么能在当前页面上显示警报或重定向页面警告用户"没有相应的数据".
举例如图:如果用户输入"EU"和"India",确定数据库中没有相应的记录.表单允许用户将字段留空.
我以前使用raise ValidationError,如果查询结果与数据库不匹配,它将转到黄色的"异常"页面,这不是用户友好的.我想在提交后立即在SAME表单页面上显示错误消息:
views.py
from django.contrib import messages
class InputFormView(FormView):
template_name = 'entryform.html'
form_class = EntryForm
def get_success_url(self):
params = {
'department': self.request.POST.get('company'),
'person': self.request.POST.get('region')
}
return ''.join([reverse('final'), '?', urllib.urlencode(params.items())])
class FinalView(ListView):
context_object_name = 'XXX'
template_name = 'XXX.html'
model = Final
def get_queryset(self):
form = InputForm(self.request.GET)
if form.is_valid():
department = form.cleaned_data['department']
person = form.cleaned_data['person']
if department !="" and person !="":
if Final.objects.filter(department=department,person=person).exists():
queryset=Final.objects.filter(department=department,person=person)
return queryset
else:
msg="no corresponding data exists!"
form.add_error('department', msg)
form.add_error('person', msg)
elif department =="" and …
Run Code Online (Sandbox Code Playgroud) 我使用jQuery月选择器(没有日期),格式如:201110.
我想设置一个最小日期(参见代码),所以首先在django forms.py中定义它为date-min,然后将此日期解析为html.首先是最小/最大范围.(虽然现在不行).
然后为了实现"to"日期总是晚于"from"日期,我还需要使用min/max函数,然后它会覆盖我从SQL设置的前一个月范围.
目前的情况是我可以实现"到"日期>"从"日期.但是最小日期(来自MYSQL)现在不起作用.
我怎么能解决这个冲突,请告诉我.提前致谢
感谢您的回复.
<script type="text/javascript">
$(function() {
$( "#from, #to" ).datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy MM',
minDate: $(this).date-min, ///it is here doesn't work, the minDate is coming from Django
onClose: function(dateText, inst) {
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year, month, 1));
},
beforeShow : function(input, inst) {
if ((datestr = $(this).val()).length > 0) {
year = datestr.substring(datestr.length-4, datestr.length);
month = jQuery.inArray(datestr.substring(0, datestr.length-5), $(this).datepicker('option', …
Run Code Online (Sandbox Code Playgroud) 我有 2 个应用程序。
输入:具有包含下拉列表的形式:区域。下拉列表值来自结果数据库(由用户上传)。填写表单时,用户需要从下拉列表中选择值。
结果:有数据库
现在我可以在输入表单中显示“输入”应用程序数据库中的下拉列表。(如图所示)。
我现在遇到的问题是选择完选项并提交后,出现如下错误:
该错误显示如下:选择一个有效的选项。该选项不是可用选项之一。然后我不明白为什么,因为我确实从下拉列表中选择了选项。
预先感谢您帮助查明问题。
模型.py
from django import forms
from django.forms import ModelForm
from django.db import models
from dupont.models import Result
from datetime import date
from django.forms import widgets
class Input(models.Model):
company=models.CharField(max_length=100)
region=models.CharField(max_length=100)
def __unicode__(self):
return self.company
Run Code Online (Sandbox Code Playgroud)
表格.py
from django import forms
from django.forms import ModelForm
from .models import Input
from dupont.models import Result
from django.contrib.auth.models import User,Group
from django.forms import widgets
from functools import partial
from django.forms.utils import ErrorList
class InputForm(forms.ModelForm): …
Run Code Online (Sandbox Code Playgroud) 在表单中,有两个字段:
class Input(models.Model):
start_year=models.CharField(max_length=100)
start_month=models.CharField(max_length=100)
end_year=models.CharField(max_length=100)
end_month=models.CharField(max_length=100)
....
Run Code Online (Sandbox Code Playgroud)
在sql数据库中,有两列:年份;月, ....
我想根据用户在表单(start_year,start_month;end_year,end_month)中输入的内容作为在数据库中过滤的日期范围(年,月)。
XX.objects.filter(date_range=[]),或者我可以放入这个 data_range 函数吗?
如果您需要的话,以下是一些相关代码。
带有用户输入数据的表单的应用程序-views.py
def input(request):
if request.method == 'POST':
form = InputForm(request.POST)
if form.is_valid():
...
start_year=form.cleaned_data['start_year']
start_month=form.cleaned_data['start_month']
end_year=form.cleaned_data['end_year']
end_month=form.cleaned_data['end_month']
...
form.save()
return redirect('FilterResult')
Run Code Online (Sandbox Code Playgroud)
根据用户的条目过滤数据库-views.py
class XXXView(ListView):
context_object_name = 'XXX'
template_name = 'XXX.html'
queryset = XXX.objects.all()
start_year=self.request.query_params.get('start_year', None) /*get from the form what the user has entered
start_month=self.request.query_params.get('start_month', None)
end_year=self.request.query_params.get('end_year', None)
end_month=self.request.query_params.get('end_month', None)
objects.filter(date_range=[.....]) /*how to concatenate the year and month to put here?
if start_year,start_month,end_year,end_month are not …
Run Code Online (Sandbox Code Playgroud) 我有一个表单,在输入信息后,根据信息过滤数据库并进行一些计算,最后将结果显示给重定向的URL.
我确实可以重定向到另一个URL并成功显示结果.但问题在于它无法显示用户提交的任何数据,只显示每个字段的内容,结果不是基于fitered queryset.让我们说总和,它只是总结数据库中的所有列,而不使用过滤结果.
我怀疑查询集没有将过滤后的结果传递给def get_context_data,因此get_context_data中的查询集不起作用.
如果你解开我的疑问,真的非常感谢你.
(我根据建议合并了2个类的EDIT版本,希望有人能纠正这个EDIT版本,谢谢)
urls.py
url(r'^result_list/$',ResultView.as_view(),name='result'),
url(r'^input/$',InputFormView.as_view(),name='input'),
Run Code Online (Sandbox Code Playgroud)
views.py
class InputFormView(request):
#class InputFormView(FormView):
template_name = 'inputform.html'
form_class = InputForm
response = HttpResponse( 'result' )
request_form_data = request.POST #you need to sanitize/clear this data
response.set_cookie('form_data', request_form_data)
#redirect to result page with submitted form information
def get_success_url(self):
return ''.join(
[
reverse('result'),
'?company=',self.request.POST.get('company'), <--do I need to change "POST" into "USER"?
'®ion=',self.request.POST.get('region')
]
)
#class ResultView(ListView):
class ResultView(request):
context_object_name = 'result_list'
template_name = 'result_list.html'
model = Result
def get_context_data(self, **kwargs):
context …
Run Code Online (Sandbox Code Playgroud) 如果mysql数据库中有2列:year; 月,现在我想根据年-月范围进行总和计算而不指定日期。假设从2010-11到2011-07,我如何实现呢?
SELECT * FROM TT WHERE F1 BETWEEN '2010-11' AND '2011-07'
Run Code Online (Sandbox Code Playgroud)
,它不起作用。