Я работаю над проектом инвентаризации Книг, где пользователи могут добавлять свои книги, а другие могут их видеть.
То, что я пытаюсь на домашней странице показать все книги, но увидит только владелец опции «Редактировать» и «Удалить». Другие увидят опцию «Подробнее».
Я использовал функцию get_user_model () Django, чтобы получить владельца книги, когда пользователь добавляет новую книгу:
...
class Book(models.Model):
title =models.CharField(max_length =255)
author =models.CharField(max_length =255)
genre =models.CharField(max_length=255)
date=models.DateTimeField(auto_now_add =True)
owner =models.ForeignKey(get_user_model(),on_delete =models.CASCADE,)
...
Теперь, когда я отображаю имя пользователя и владельца книги, это не работает. Этот шаблон HTML:
...
{% for book in object_list %}
<div class="card">
<span class="font-weight-bold">{{book.title}}</span>
<span class="font-weight-bold">by {{book.author}}</span>
<span class="text-muted">Genre: {{book.genre}}</span>
<span class="text-muted">Owner: {{book.owner}}</span>
<span class="text-muted">User: {{user.username}}</span>
<div class="card-footer text-center text-muted">
{% if user.username == book.owner %}
<a href ="{% url 'book_edit' book.pk %}">Edit</a> | <a href="{% url 'book_delete' book.pk %}">Delete</a>
{% else %}
<a href="#">Show Details</a>
{% endif %}
</div>
</div>
<br />
{% endfor %}
...
Я привожу и имя пользователя, и владельца отдельно для сравнения. Тем не менее я получаю подробности показа для всех книг.
Для отладки я также попытался приравнять и user.username, и book.owner 'to' jitesh2796 '. Хотя первый работает, а второй нет. Так что, я думаю, проблема где-то в поле django.