Попытка поместить данные из базы данных на приборную панель в Django

Итак, я следую этому руководству: https://www.youtube.com/watch?v=_sWgionzDoM и на данный момент нахожусь примерно на 55 минуте

У меня все работает, однако я не могу заставить приборную панель показывать мои данные из базы данных. Таблица отображается на странице администратора с данными, но когда я перехожу на панель пользователя, она не отображается.

Вот код моей приборной панели.


{% extends 'page.html' %}


{% block content %}
    {% if messages %}
        <div class="row mt-3">
            {% for message in messages %}
                {% if message.tags == 'error' %}
                    <div class="col-md-10 col-12 mx-auto alert alert-danger">
                        {{ message }}
                    </div>
                {% else %}
                    <div class="col-md-10 col-12 mx-auto alert alert-success">
                        {{ message }}
                    </div>
                {% endif %}
            {% endfor %}
        </div>
    {% endif %}
    <div class="row">
        <div class="col-md-10 col-12 mx-auto mt-5">
            <div class="d-flex justify-content-end">
                <a href="{% url 'main' %}" class="btn btn-primary">+</a>
            </div>

            <table class="table table-hover table-striped">
                <thead>
                    <tr>
                        <th scope="col">ID</th>
                        <th scope="col">Name</th>
                        <th scope="col">Qty</th>
                        <th scope="col">Category</th>
                        <th scope="col"></th>
                        <th scope="col"></th>
                    </tr>
                </thead>
                <tbody>
                    {% if items|length == 0 %}
                    <tr>
                        <th scope="row">-</th>
                        <td>no data</td>
                        <td>-</td>
                        <td>-</td>
                        <td>-</td>
                        <td></td>
                    </tr>
                    {% endif %}

                    {% for item in items %}
                    <tr>
                        <th scope="row">{{ item.id }}</th>
                        <td>{{ item.name }}</td>
                        {% if item.id in low_inventory_ids %}
                            <td class="text-danger">{{ item.quantity }}</td>
                        {% else %}
                            <td class="text-success">{{ item.quantity }}</td>
                        {% endif %}
                        <td>{{ item.category.name }}</td>
                        <td><a href="{% url 'edit-item' item.id %}" class="btn btn-outline-secondary">Edit</a></td>
                        <td><a href="{% url 'delete-item' item.id %}" class="btn btn-secondary">Delete</a></td>
                    </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>
    </div>
{% endblock content %}

Вот код моей модели

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class InventoryItem(models.Model):
    name = models.CharField(max_length=200)
    quantity = models.IntegerField()
    category = models.ForeignKey("Category", on_delete=models.SET_NULL, blank=True, null=True)
    date_created = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE,)   
#related_name='accounts_inventoryitems


    def __str__(self):
        return self.name

class Category(models.Model):
    name = models.CharField(max_length=200)

    class Meta:
        verbose_name_plural = 'categories'

    def __str__(self):
        return self.name`

и вот мой файл views.py

class Dashboard(View):
   def get(self, request):
       items = InventoryItem.objects.filter(user=self.request.user.id).order_by('id')
      return render(request, 'dashboard.html', {'items': items})

Я действительно не уверен, в какой момент он больше не отправляет данные. Я выполнил отладку, и это показывает, что база данных заполнена правильными значениями.

Надеюсь, вы сможете помочь!

Проблема заключается в вашем queryset.

Линия: filter(user=request.user.id) фильтрует модель инвентаризации для объекта , но значение, по которому вы фильтруете, является первичным ключом текущего пользователя, а не самим объектом пользователя.

Чтобы исправить это, необходимо изменить значение фильтра на экземпляр пользователя:

InventoryItem.objects.filter(user=request.user)

Альтернативный вариант - фильтровать по user_id напрямую:

InventoryItem.objects.filter(user_id=request.user.id)
Вернуться на верх