2 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
你應(yīng)該使用:
{% if request.user == book.owner %}
…
{% endif %}
但盡管如此,在模板中進(jìn)行過(guò)濾并不是一個(gè)好主意。您應(yīng)該在視圖中進(jìn)行過(guò)濾,以便過(guò)濾可以在數(shù)據(jù)庫(kù)級(jí)別進(jìn)行。例如:
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設(shè)置 [Django-doc]而不是 get_user_model()[Django-doc]。這更安全,因?yàn)槿绻矸蒡?yàn)證應(yīng)用程序尚未加載,設(shè)置仍然可以指定模型的名稱。因此最好這樣寫(xiě):
from django.conf import settings
class Book(models.Model):
# …
owner = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要更新模板中的條件
{% if user.username == book.owner.username %}
....
{% endif %}
- 2 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報(bào)