Python 从窗体到django上原始数据库的请求

Python 从窗体到django上原始数据库的请求,python,django,forms,Python,Django,Forms,我刚接触python和django,目前我对如何做我的项目有点困惑 情况很简单: 用户通过使用前面的表格要求每周统计客户,并应获得所选期间(年、周)每个客户的统计列表 到目前为止,我能够查询原始数据库中的数据,统计所选工作周的开始日期和结束日期 在my models.py中 def WeekRange(year, week): d = date(year, 1, 1) delta_days = d.isoweekday() - 1 delta_weeks = week

我刚接触python和django,目前我对如何做我的项目有点困惑

情况很简单: 用户通过使用前面的表格要求每周统计客户,并应获得所选期间(年、周)每个客户的统计列表

到目前为止,我能够查询原始数据库中的数据,统计所选工作周的开始日期和结束日期

在my models.py中

def WeekRange(year, week):
    d = date(year, 1, 1)
    delta_days = d.isoweekday() - 1
    delta_weeks = week
    if year == d.isocalendar()[0]:
        delta_weeks -= 1
    delta = timedelta(days=-delta_days, weeks=delta_weeks)
    weekbeg = datetime.datetime.combine(d, datetime.time(00, 00, 01)) + delta
    delta2 = timedelta(days=6-delta_days, weeks=delta_weeks)
    weekend = datetime.datetime.combine(d, datetime.time(23, 59, 59)) + delta2
    cursor = connections['nocdb'].cursor()
    cursor.execute("SELECT DISTINCT (p.name) AS platform, count(e.id ) AS count FROM event e, lu_platform p WHERE e.platform_id = p.id AND e.sourcetype_id = 1 AND e.event_datetime BETWEEN %s AND %s AND e.sender_id  NOT IN ( 759, 73 ) GROUP BY p.name ORDER BY p.name", [weekbeg, weekend] )
    results = cursor.fetchall()
    return results
view.py

def WeekRequestForm(request):
    form = WeekSelection()
    year = request.POST.get("q_year", "")
    week = request.POST.get("q_week", "")
    currstat_b = [year, week]
    weekstat = WeekRange(*currstat_b)
    return render_to_response('form.html', {'weekstat': weekstat, 'form': form}, context_instance=RequestContext(request))
forms.py

YEARCHOICE = tuple((str(n), str(n)) for n in range(2011, datetime.now().year + 1))
WEEKCHOICE = range(1, 53)

class WeekSelection(forms.Form):
    q_year = forms.ChoiceField(label='Year', choices=YEARCHOICE, initial=(datetime.today().isocalendar()[0]))
    q_week = forms.ChoiceField(label='Week', choices=zip(WEEKCHOICE, WEEKCHOICE), initial=(datetime.today().isocalendar()[1]))
通过以下内容,我得到“需要一个整数” 更换currstat_b=[2013,48]后一切正常,并向我展示第48周的statistick

问题是如何在weekstat=WeekRange(*currstat_b)中从窗体到参数获取选定的数字

另外,我也不确定是否最好像现在一样将原始数据函数放在视图或模型中


如有任何提示,我将不胜感激。通过表单传递数据可能会有所帮助,请尝试以下方法:

def WeekRequestForm(request):
    form = WeekSelection()
    weekstat = None
    if request.method == "POST":
        form = WeekSelection(request.POST)
        if form.is_valid():
            year = int(form.cleaned_data["q_year"])
            week = int(form.cleaned_data["q_week"])
            currstat_b = [year, week]
            weekstat = WeekRange(*currstat_b)
    return render_to_response('form.html', {'weekstat': weekstat, 'form': form},
        context_instance=RequestContext(request))

仍然不走运:异常值:分配请求信息之前引用的局部变量“weekstat”:GET no GET data POST no POST dataException Type:TypeError异常值:POST变量值q_year u'2013'q_week u'3'可能是因为u'in year week值?@user2859660可能,尝试将年和周转换为int:year=int(form.cleaned_data[“q_year”])week=int(form.cleaned_data[“q_week”])很好,正在处理转换为int的操作。感谢您的帮助