#django #django-models #django-views
#django #django-модели #django-просмотры
Вопрос:
Я получаю следующую ошибку:
FieldError at /tag/htc_phones/
Cannot resolve keyword 'slug_iexact' into field. Choices are: Tag_Name, id, posts, slug
models.py :
class Tag(models.Model):
Tag_Name = models.CharField(max_length=100)
slug = models.SlugField(unique=True,editable=True,max_length=200)
def __str__(self):
return self.Tag_Name
def get_absolute_url(self):
return reverse('tag_detail_url', kwargs={'slug':self.slug})
views.py:
def tag_detail(request,slug):
tag = Tag.objects.get(slug_iexact=slug)
return render(request,'website_primary_html_pages/tag_detail.html',context={'tag':tag})
как исправить эту проблему, спасибо
Ответ №1:
Чтобы использовать поиск, вы используете два последовательных символа подчеркивания (so __
):
def tag_detail(request,slug):
tag = Tag.objects.get(slug__iexact=slug) # ← slug__iexact, not slug_iexact.
return render(request,'website_primary_html_pages/tag_detail.html',context={'tag':tag})
Примечание: часто лучше использовать
get_object_or_404(…)
[Django-doc],
а затем использовать.get(…)
[Django-doc] напрямую. В случае, если объект не существует,
например, потому, что пользователь сам изменил URL-адрес,get_object_or_404(…)
это приведет к возврату ответа HTTP 404 Not Found, тогда как использование
.get(…)
приведет к ошибке сервера HTTP 500.
Комментарии:
1. спасибо, это отлично работает, спасибо за примечание, другой вопрос на моей HTML-странице я хочу показать имя тега, которое я добавил, поэтому я пишу этот код
<h4>{{mobile_posts.tag}}</h4>
, но на моей html-странице показаноblog_app.Tag.None
, что я хочу имя тега, почему это происходит?2. @KokHyvv: потому что это, вероятно, a
ManyToManyField
, вам нужноmobile_posts.tags.all
, но это даст вам a<QuerySet
, поэтому вам нужно его отобразить{% for mytag in mobile_posts.tags.all %}{{ mytag }}{% endfor %}
.3. привет, можешь спросить тебя.. как сделать разбивку на страницы в views.py в tag_deatil ?
4. @KokHyvv: но здесь вы показываете детали одного
tag
, следовательно, разбивать на страницы нечего.5. хорошо .. когда я добавляю какой-то тег и добавляю много и много записей в этот тег. на странице будут показаны все сообщения с этим тегом.. итак, на странице тегов, как добавить разбивку на страницы, и если я не могу, что я должен отредактировать?