#実現したいこと
投稿サイトで、投稿の編集機能を作成しています。
現在はログインしているユーザーが編集機能を行えるのようにしているのですが、他のユーザーの投稿も編集できてしまします。
そこで、自分の投稿のみに編集権限を与えるようにしていのですが、上手くできません。
#環境
python 3.7.3
django 2.2
#コード
- models.py
class MessageModel(models.Model): title = models.CharField(max_length=100) message = models.TextField() author = models.ForeignKey('auth.User', on_delete=models.CASCADE) date = models.DateTimeField(default=timezone.now)
- views.py
@login_required def detailfunction(request, pk): message = MessageModel.objects.get(pk=pk) return render(request, 'detail.html', {'message':message}) class UpdateClass(LoginRequiredMixin, UpdateView): template_name = 'update.html' model = MessageModel fields = ('title', 'message') success_url = reverse_lazy('list')
- detail.html
<div class="messages"> <p>{{ message.title }}</p> <p>{{ message.author }}</p> <p>{{ message.message }}</p> <p>{{ message.date }}</p> </div> <div class="edit"> {% if request.user.id == object.author_id %} <a href="{% url 'update' message.pk %}">Edit</a> {% endif %} </div>
#試したこと
編集ボタンが表示されないように、{% if request.user.id == object.author_id %}
を追加してみたのですが、どのユーザーからも編集画面に行くリンク(<a href="{% url 'update' message.pk %}">Edit</a>
)が消えてしましました。
また下記リンクのも試しましたが、admin画面から権限を追加しているようですが、
そうではなく、ログインしているユーザーが自分の投稿のみを編集できるようにadminで権限管理しなくてもいいようにしたいです。
{% if request.user.id == object.author_id %}
に関しては下記の記事を参考にしました。
Django2 でユーザー認証(ログイン認証)を実装するチュートリアル -3- ブログアプリへの実装
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/07/04 14:52