"Django上的从表单向原始数据库的请求"

2024-07-04 08:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触python和django,现在对如何做我的项目有点困惑。你知道吗

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

到目前为止,我可以查询原始数据库中的数据,统计功能的开始日期和结束日期的选定工作周罚款。你知道吗

在我的型号.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

你知道吗视图.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))

你知道吗表单.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\u b)中从窗体到参数获取选定的数字

另外,我也不确定是把原始数据函数放在视图中还是像现在这样放在模型中更好。你知道吗

如果你给我小费,我将不胜感激


Tags: andpyformiddatetimerequestdaysyear
1条回答
网友
1楼 · 发布于 2024-07-04 08:17:23

也许通过表单传递数据会有所帮助,请尝试以下操作:

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))

相关问题 更多 >

    热门问题