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 关注
- 85 浏览
添加回答
举报