Нет совпадений операторов. Вам может понадобиться добавить явные приведения типов django postgres - PullRequest
0 голосов
/ 02 июля 2019

я пытался получить доступ к artist_type на основе идентификатора, когда я пробовал domain.com/artist/3, я получал эту ошибку:

operator does not exist: character varying = integer
LINE 1: ...main_site_artist" WHERE "main_site_artist"."artist_type" = 3
                                                                ^
HINT:  No operator matches the given name and argument types. You might need to add explicit type casts.

, как я вижу в таблице, есть 2 artist_type с идентификатором 3.так как я фильтрую художника по типу artist_type

это models.py:

from django.db import models

class artist(models.Model):
  CHOICES = (
      (0, 'celebrities'),
      (1, 'singer'),
      (2, 'comedian'),
      (3, 'dancer'),
      (4, 'model'),
      (5, 'Photographer')
  )
  artist_name = models.CharField(max_length = 50)
  artist_type = models.IntegerField(choices = CHOICES)
  description = models.TextField(max_length = 500)

  def __str__(self):
    return self.artist_name

это моя таблица базы данных:

celeb=# select * from main_site_artist;

id | artist_name | artist_type |  description   
----+-------------+-------------+----------------
1 | test        | 1           | test
2 | aka         | 3           | aka
3 | test2       | 4           | aka
4 | sonu        | 3           | aka moth
5 | norma       | 0           | its norma here

urls.py:

from django.urls import path
from . import views



urlpatterns = [
 path('',views.index, name='mainsite-index'),
 path('about/',views.about, name='mainsite-about'),
 path('contact/', views.contact, name='mainsite-contact'),
 path('artist/<int:artist_type>/',views.talent, name='mainsite-talent'),
 path('book_artist/', views.artist_booking, name="artist_book")

]

views.py:

 def talent(request, artist_type):
        artists = artist.objects.filter(artist_type = int(artist_type))
        context = {
                 'aka': artists
        }
        return render(request, 'main_site/talent.html', context)

это base.html, где я буду нажимать:

 <ul class="dropdown-menu nav-font" style="margin-top: 7px">
            <li> <a href={% url 'mainsite-talent' artist_type='0' %} style="color:grey;padding-left:5px">Celebrities</a></li>
             <li> <a href={% url 'mainsite-talent'  artist_type='1' %} style="color:grey;padding-left:5px">Singer</a></li>
             <li> <a href={% url 'mainsite-talent' artist_type='2' %} style="color:grey;padding-left:5px">Comedian</a></li>
             <li> <a href={% url 'mainsite-talent' artist_type='3' %} style="color:grey;padding-left:5px">Dancer</a></li>
             <li> <a href={% url 'mainsite-talent' artist_type='4' %} style="color:grey;padding-left:5px">Model</a></li>
             <li> <a href={% url 'mainsite-talent' artist_type='5' %} style="color:grey;padding-left:5px">Photographer</a></li>
                                 </ul>

теперь, когда я получаю доступlocalhost: 8000 я получаю эту ошибку:

Reverse for 'mainsite-talent' with no arguments not found. 1 pattern(s) tried: ['artist/(?P<artist_type>[0-9]+)/$']

и с localhost: 8000 / artist / 3 все та же ошибка:

You might need to add explicit type casts.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...