首页 > 解决方案 > Django:尝试过滤用户已接受的事件时未定义名称“请求”

问题描述

我正在尝试过滤仅由当前登录用户接受的事件,但是错误“名称'请求'未定义”继续弹出。我已经尝试过 self.request 用户,但它仍然无法正常工作!

from datetime import datetime, timedelta
from calendar import HTMLCalendar
from cal.models import Event
from django.contrib.auth.models import User


class Calendar(HTMLCalendar):
    def __init__(self, year=None, month=None):
        self.year = year
        self.month = month
        super(Calendar, self).__init__()

# formats a day as a td
# filter events by day
def formatday(self, day, events):
    events_per_day = events.filter(start_time__day=day, acceptor=self.request.user )
    d = ''
    for event in events_per_day:


        # filter event that only accepted by user
        if event.acceptor == User:
            d += event.get_absolute_url()   


    if day != 0:
        return f"<td><span class='date'>{day}</span><ul> {d} </ul></td>"
    return '<td></td>'

# formats a week as a tr 
def formatweek(self, theweek, events):
    week = ''
    for d, weekday in theweek:
        week += self.formatday(d, events)
    return f'<tr> {week} </tr>'

def formatmonth(self, withyear=True, ):
    events = Event.objects.filter(start_time__year=self.year, start_time__month=self.month)

    cal = f'<table border="0" cellpadding="0" cellspacing="0" class="calendar">\n'
    cal += f'{self.formatmonthname(self.year, self.month, withyear=withyear)}\n'
    cal += f'{self.formatweekheader()}\n'
    for week in self.monthdays2calendar(self.year, self.month):
        cal += f'{self.formatweek(week, events)}\n'
    return cal

标签: djangopython-2.7django-views

解决方案


我知道它的回复晚了,但我最近面临着类似的问题。这是我的解决方案:创建一个属性名称 user 或任何东西来存储 id 并从参数中获取它。

    def __init__(self, year=None, month=None, user=None):
    self.year = year
    self.month = month
    self.user = user
    super(Calendar, self).__init__()

像这样在views.py中创建对象时传递用户

user = self.request.user
cal = Calendar(d.year, d.month, user)

然后随意使用:

 events_per_day = events.filter(start_time__day=day, acceptor=self.user )

推荐阅读