Django как go получить все товары только для авторизованного пользователя? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть следующий код, и при отображении страницы в таблице отображаются все продукты для всех пользователей, независимо от того, какой пользователь вошел в систему. Я хочу показать в таблице только продукты, созданные только зарегистрированным пользователем. не от всех пользователей. Любая помощь с моей проблемой? Заранее спасибо.

views.py

@login_required
def eadmin(request):
    transactions = Product.objects
    return render(request, 'accounts/index.html', {'transactions': transactions})

models.py

class Product(models.Model):
    details = models.CharField(max_length=1000)
    opname = models.CharField(max_length=100)
    pub_date = models.DateTimeField()
    amount = models.IntegerField()
    contactemail = models.TextField()
    purpose = models.TextField()
    poster = models.ForeignKey(User, on_delete=models.CASCADE)
    transactionid = models.CharField(max_length=6)

    def __str__(self):
        return self.transactionid

В шаблоне html:

      <table class="table">
        <thead>
          <tr>
            <th scope="col">#</th>
            <th scope="col">XXXXX</th>
            <th scope="col">Amount €</th>
            <th scope="col">Transaction ID</th>
          </tr>
        </thead>
        {% for transaction in transactions.all %}
        <tbody>
            <tr>
            <th scope="row">-</th>
            <td>{{ transaction.opname }}</td>
            <td>{{ transaction.amount }}</td>
            <td>{{ transaction.transactionid }}</td>
            </tr>
        </tbody>
       {% endfor %}
      </table>

Ответы [ 2 ]

1 голос
/ 16 марта 2020

views.py:

@login_required
def eadmin(request):
    transactions = Product.objects.filter(poster=request.user)
    return render(request, 'accounts/index.html', {'transactions': transactions})

HTML шаблон:

<table class="table">
        <thead>
          <tr>
            <th scope="col">#</th>
            <th scope="col">XXXXX</th>
            <th scope="col">Amount €</th>
            <th scope="col">Transaction ID</th>
          </tr>
        </thead>
        {% for transaction in transactions %}
        <tbody>
            <tr>
            <th scope="row">-</th>
            <td>{{ transaction.opname }}</td>
            <td>{{ transaction.amount }}</td>
            <td>{{ transaction.transactionid }}</td>
            </tr>
        </tbody>
       {% endfor %}
      </table>
1 голос
/ 16 марта 2020

Если ваши продукты имеют внешний ключ для пользователя, то просто:

transactions = Product.objects.filter(user=request.user)

И в шаблонах измените транзакции l oop на:

{% for transaction in transactions %}

Вот теперь вы ' Все продукты для текущего пользователя будут доступны.

...