Показать элементы базы данных, связанные с пользователем (Django) - PullRequest
1 голос
/ 05 апреля 2020

На моем веб-сайте, когда пользователь входит в систему, он перенаправляется на страницу своего профиля. Теперь я хотел бы увидеть все предметы, которые он хранит в базе данных. Как я мог сделать? Спасибо

Вот views.py. Это страница, на которую перенаправляется пользователь после входа в систему

class userView(TemplateView):
    template_name = 'search/user.html'

Html file:

<div class="add">
  <div class="posted">

    {% if objects_list %}
    {% for o in objects_list %}
    <div class="container_band">
      <div class=album_band>
        <!-- insert an image -->

        <img src= "" width="100%">

      </div>

      <div class="info_band">
        <!-- insert table info -->
        <table>
          <tr><th><h2>{{o.band}}</h2></th></tr>
          <tr><td> Anno: </td><td> {{o.anno}} </td></tr>
          <tr><td> Disco: </td><td> {{o.disco}} </td></tr>
          <tr><td> Etichetta: </td><td> {{o.etichetta_d}} </td></tr>
          <tr><td> Matrice: </td><td> {{o.matrice}} </td></tr>
        </table>
      </div>
    </div>
  {% endfor %}
  {% endif %}

  </div>

models.py

class Info(models.Model):
    utente = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default=1)
    band = models.CharField(max_length=200)
    disco = models.CharField(max_length=200)
    etichetta_p = models.CharField(max_length=200)
    etichetta_d = models.CharField(max_length=200)
    matrice = models.CharField(max_length=200)
    anno = models.PositiveIntegerField(default=0)
    cover = models.ImageField(upload_to='images/', blank=True)


    def __str__(self):
        return self.band

    class Meta:
      verbose_name_plural = "Info"
      ordering = ['anno']

1 Ответ

1 голос
/ 05 апреля 2020

Используйте представление Django, которое берет модель и выдает данные модели.

class userView(ListView):
    model = Info  # assumes it is imported from models
    template_name = 'search/user.html'

Это перечислит все, но вы хотите ограничить только пользователя. Поэтому отфильтруйте выходные данные по идентификатору пользователя:

class userView(ListView):
    model = Info  # assumes it is imported from models
    template_name = 'search/user.html'

    def get_queryset(self):
        qs = super().get_queryset()
        return qs.filter(utente=self.request.user)

Измените свой html шаблон objects_list на object_list.

Для получения дополнительной информации см. Здесь: https://docs.djangoproject.com/en/3.0/ref/class-based-views/generic-display/#listview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...