Фильтр Django-Функция-Просмотр набора запросов для пользователя.Запрос

#python #django #django-queryset

Вопрос:

Models.py

 class Experience(models.Model):
    user = models.ForeignKey(User, null=True, on_delete = models.CASCADE)
    company_name = models.CharField(max_length=100)
    company_address = models.CharField(max_length=200)
    post_held = models.CharField(max_length=30)
    year_from = models.CharField(max_length=20)
    year_to = models.CharField(max_length=20)
    info = models.TextField()

    def get_absolute_url(self):
        return reverse('resume')

    def __str__ (self):
        return self.company_name
 

Views.py

 def Resume(request):
    experience = Experience.objects.filter(user = request.user)

    return render(request, 'resume.html', {'experience': experience})
 

Шаблон

 <ul>
    {% for an_experience in experience %}
    <a href="{% url 'edit_experience' an_experience.pk %}"><li ><h5>{{ an_experience }},</h5></a> {{ an_experience.company_address }} - {{ an_experience.post_held }}</li>
    <small>{{ an_experience.year_from }} - {{ an_experience.year_to }}</small>
    <div>
        {{ an_experience.info }}
    </div>
    {% endfor %}
</ul>
 

если я использую .all() , он работает отлично, но при попытке отфильтровать его с помощью request.user в файле шаблона ничего не отображается.

Комментарии:

1. Что такое request.user ? Это тот объект пользователя, который вы ожидаете? В чем заключается ценность experience in Resume() ? Имеет ли это ту ценность, которую вы ожидаете? Вы должны начать с отладки своего кода либо с print() помощью операторов, либо с помощью отладчика.

2. Как вы можете видеть, использование .all() работы означает, что .filter(user=request.user) возвращает 0 результатов . Соответствующий запрос не найден. Начните с того, что убедитесь, что все объекты Experiences имеют набор пользовательских атрибутов ( поскольку в модели Experience вы установили значение null=true ). А также попробуйте отфильтровать вот так : .filter(user_id=request.user.id)

3. вы вошли в систему? пожалуйста, проверьте, вошел ли пользователь в систему или нет, иначе запросите.пользователь предоставит нулевое значение.

4. Да, я вошел в систему