クエリセットを使用して一連のものを取得し、それらをリストとして表示しています。これをクリックすると、選択した記事の詳細を表示できます。記事の詳細ビューには、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 をループする必要があるのは最善の考えではないようです。