Django. Как вывести публикации только текущего пользователя, а не все подряд?

Всем привет. Мне нужно вывести объявления только текущего пользователя, т.е., если я зайду под другим именем, в личном кабинете должны быть только мои объявления.
Вот кусок, отвечающий за объявленя в личном кабинете:
<!-- Listings -->
  <section id="listings" class="py-4">
    <div class="container">
      {% if user.is_authenticated %}
      <a href="{% url 'listing_add' %}" class="btn btn-secondary mb-4"><h5>Добавить объявление</h5></a>
      {% endif %}
      <div class="row">
        {% if listings %}
          {% for listing in listings %}            
          <div class="col-md-6 col-lg-4 mb-4">
              <div class="card listing-preview">
                {% if listing.photo_main %}
                <img class="card-img-top" src="{{ listing.photo_main.url }}" alt="">
                {% endif %}
                <div class="card-img-overlay">
                  <h2>
                    <span class="badge badge-secondary text-white">${{ listing.price | intcomma }}</span>
                  </h2>
                </div>
                <div class="card-body">
                  <div class="listing-heading text-center">
                    <h4 class="text-primary">{{ listing.title }}</h4>
                    <p>
                      <i class="fas fa-map-marker text-secondary"></i> {{ listing.region }}, {{ listing.city }}, {{ listing.district }}</p>
                  </div>
                  <hr>
                  <div class="row py-2 text-secondary">
                    <div class="col-6">
                      <i class="fas fa-th-large"></i> Площадь: {{ listing.sqft }}</div>
                    <div class="col-6">
                      <i class="fas fa-car"></i> Гараж: {{ listing.garage }}</div>
                  </div>
                  <div class="row py-2 text-secondary">
                    <div class="col-6">
                      <i class="fas fa-bed"></i> Комнаты: {{ listing.bedrooms }}</div>
                    <div class="col-6">
                      <i class="fas fa-step-forward"></i> Этаж: {{ listing.stage }}</div>
                  </div>
                  <hr>
                  <div class="row py-2 text-secondary">
                    <div class="col-12">
                      <i class="fas fa-user"></i> {{ listing.realtor.first_name }} {{ listing.realtor.last_name }}</div>
                  </div>
                  <div class="row text-secondary pb-2">
                    <div class="col-6">
                      <i class="fas fa-clock"></i> {{ listing.list_date | timesince }}</div>
                  </div>
                  <hr>
                  <a href="{% url 'listing' listing.id %}" class="btn btn-primary btn-block">Ещё</a>
                </div>
              </div>
            </div>            
          {% endfor %}
        {% else %}
          <div class="col-md-12">
            <p>Нет доступных объявлений</p>
          </div>
        {% endif %}
      </div>

Вот представление:
def dashboard(request):
  listings = Listing.objects.order_by('-list_date').filter(is_published=True)

  paginator = Paginator(listings, 6)
  page = request.GET.get('page')
  paged_listings = paginator.get_page(page)

  context = {
    'listings': paged_listings
  }
  return render(request, 'accounts/dashboard.html', context)

Помогите, пожалуйста, как это можно решить
  • Вопрос задан
  • 481 просмотр
Пригласить эксперта
Ответы на вопрос 1
@dcontm
Если я правильно понял - после логина вы хотите видеть только свои объявления. Тогда, в вашем представлении нужно заменить
listings = Listing.objects.order_by('-list_date').filter(is_published=True)
на
listings = Listing.objects.order_by('-list_date').filter(is_published=True).fillter(author=request.user)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы