Не удается разрешить ключевое слово ‘slug_iexact’ в поле. Варианты: Имя_Тега, идентификатор, сообщения, slug

#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. хорошо .. когда я добавляю какой-то тег и добавляю много и много записей в этот тег. на странице будут показаны все сообщения с этим тегом.. итак, на странице тегов, как добавить разбивку на страницы, и если я не могу, что я должен отредактировать?