我正在使用查询集检索一堆东西并将它们显示为列表,然后可以单击以查看所选文章的详细信息。所以在文章的详情视图中,我有一个 is_creator 方法:
@login_required
def is_creator(userProfile, article):
if userProfile == article.creator:
return True
else:
return False
所以我可以随意显示一个编辑按钮。但是在主页上,情况就不同了,因为我正在进行查询,并将查询集直接提供给模板,该模板将创建一个 for 循环来显示标题。如果当前用户是创建者,我仍然想知道每篇文章。
所以我正在考虑在模型本身中添加工作,而不必在任何地方复制代码。
@property
def is_creator(self,user):
if self.creator.user == user:
return 1
else:
return 0
我在想,通过在模型中添加它,我应该能够很容易地调用模板 {% if event.is_creator user %}test{% endif %} 。似乎我错了,因为我面临:
TemplateSyntaxError at /
Unused 'user' at end of if expression.
我来自 PHP 世界,所以感觉这应该可行,但我显然做错了什么。
提前致谢 :)
编辑:我猜另一个解决方案是在视图中循环通过查询集,例如:
variables['articles'] = Event.objects.filter(
(Q(creator=me) | Q(bringing__attendee=me)) & Q(date_start__lt=datenow) & Q(date_end__gt=datenow)
).order_by('-date_start')
for article in variables['articles']:
article.iscreator=1 (I can do some more work here)
但似乎必须遍历 QS 并不是最好的主意。