#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
inResume()
? Имеет ли это ту ценность, которую вы ожидаете? Вы должны начать с отладки своего кода либо сprint()
помощью операторов, либо с помощью отладчика.2. Как вы можете видеть, использование
.all()
работы означает, что.filter(user=request.user)
возвращает 0 результатов . Соответствующий запрос не найден. Начните с того, что убедитесь, что все объекты Experiences имеют набор пользовательских атрибутов ( поскольку в модели Experience вы установили значение null=true ). А также попробуйте отфильтровать вот так :.filter(user_id=request.user.id)
3. вы вошли в систему? пожалуйста, проверьте, вошел ли пользователь в систему или нет, иначе запросите.пользователь предоставит нулевое значение.
4. Да, я вошел в систему