我正在使用 djnago-tables2 显示事件模型中的数据。我需要将当前请求用户放入表的渲染方法中(以进一步调用模型函数来获取当前用户的响应)。
我怎样才能做到这一点?
My Model
class Event(models.Model):
name=models.CharField(max_length=254)
start=models.DateTimeField()
end=models.DateTimeField()
invited_user=models.ManyToManyField(User,blank=True)
def getResponseFromUser(self, user):
try:
return Response.objects.filter(event=self, user=user).order_by('-pk')[0]
except Exception:
return None
class Response(models.Model):
user=models.ForeignKey(User)
event=models.ForeignKey(Event)
timestamp=models.DateTimeField(auto_now_add=True)
SEEN=0
YES=1
PROBABLY_YES=2
PROBABLY_NO=3
NO=4
RESPONSE=(
(SEEN, _('seen but undecided')),
(YES, _('Yes')),
(PROBABLY_YES, _('probably yes')),
(PROBABLY_NO, _('probably no')),
(NO, _('No')),
)
response=models.IntegerField( choices=RESPONSE, default=SEEN)
@property
def getResponseText(self):
return self.RESPONSE[self.response][1]
Table
class EventTable(tables.Table):
requestUser=None # to be set from request (externally)
eventResponse = tables.Column(empty_values=(), verbose_name="Response", orderable=False)
class Meta:
model = Event
# add class="paleblue" to <table> tag
attrs = {"class": "table"}
exclude=['id', 'user_can_invite', 'description', 'organizer']
def render_eventResponse(self, record):
responseObject=record.getResponseFromUser(self.requestUser)
if not responseObject:
return ''
else:
return responseObject.getResponseText
View
class PersonalEventTableView(SingleTableView):
model = Event
table_class = EventTable
template_name = 'list_events.html'
paginate_by = 50
在 urls.py 中,视图使用 PersonalEventTableView.as_view() 呈现
有人可以帮忙吗?