2 回答

TA貢獻1854條經驗 獲得超8個贊
你應該使用:
{% if request.user == book.owner %}
…
{% endif %}
但盡管如此,在模板中進行過濾并不是一個好主意。您應該在視圖中進行過濾,以便過濾可以在數據庫級別進行。例如:
from django.views.generic import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
class BookListView(LoginRequiredMixin, ListView):
model = Book
# …
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(
owner=self.request.user
)
注意:文檔建議使用AUTH_USER_MODEL設置 [Django-doc]而不是 get_user_model()[Django-doc]。這更安全,因為如果身份驗證應用程序尚未加載,設置仍然可以指定模型的名稱。因此最好這樣寫:
from django.conf import settings
class Book(models.Model):
# …
owner = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
- 2 回答
- 0 關注
- 151 瀏覽
添加回答
舉報