Django:如何在基础模板中在站点范围内显示查询集结果



我的django站点使用一个带有左、中、右块的基本模板。中间块和右侧块由详图样板扩展,详图样板获取由多个视图在上下文中传递的数据。

型号.py

class Participant(models.Model):
name = models.CharField(max_length=64)
...
class Code(models.Model):
name = models.CharField(max_length=64)
source = models.TextField()
author = models.ForeignKey(Participant, on_delete=models.CASCADE)

一旦参与者已知,左侧块应始终以代码名称列表的形式显示participant.code_set的结果。

我之前通过在会话中添加pickle参与者实例来做到这一点,只要知道它,然后在基本模板中的session.participant.code_set上循环。

有没有其他方法可以在不使用PickleSerializer进行会话的情况下实现同样的效果?

感谢

好的,我找到了解决方案:上下文处理器

context_processor.py

def inject_codes(request):
try:
codes = Code.objects.filter(author=request.session['participant']['pk'])
return {'codes': codes}
except KeyError:
return {}

设置.py

TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...,
'draw.context_processor.inject_codes',
],
},
},
]

最新更新