2014-04-30 1 views
2

저는 장고에서 간단한 검색 결과 페이지를 작업하고 있습니다.Django는 밑수가 10 인 int()에 대해 리터럴이 잘못되었습니다.

사용자는 텍스트로 검색하고 드롭 다운에서 도시 필드를 추가합니다. 다음과 같이

쿼리는 다음과 같습니다

if 'query' in request.GET and request.GET['query']: 
    city = request.GET['city'] 
    q = request.GET['query'] 
    ct = Classified.objects.filter(name__icontains=q).filter(city__exact=city) 
    return render(request, 'template/search.html', {'ct': ct, 'query': q}) 

다음과 같이 분류의 모델은 다음과 같습니다

class Classified(models.Model): 
    name = models.CharField(max_length=256, unique=True) 
    email = models.CharField(max_length=100) 
    category = models.ForeignKey(Categories) 
    phone_number = models.IntegerField(max_length=10, default=0) 
    address = models.CharField(max_length=1000) 
    id = models.IntegerField(primary_key=True) 
    city = models.ForeignKey(Cities) 
    image = models.ImageField(blank=True, upload_to='static/img/') 

    def __unicode__(self): 
     return self.name 

도시는 다음과 같다 :

검색에
class Cities(models.Model): 
    name = models.CharField(max_length=256) 

    def __unicode__(self): 
     return self.name 

의/검색/페이지에서 다음 오류가 발생합니다.

invalid literal for int() with base 10: 'Searched-city' 

무엇을 놓치고 있습니까?

+1

당신이 완전한 역 추적이 있습니까 도시 __name __exact에게 말하여 관계를 통해 프록시에 대한 쿼리를 업데이트해야 할 외국의 열쇠? – geoffspear

+0

비슷한 질문 목록에는 비슷한 질문이 많이 있습니다. 너 디 보이지? – devnull

+0

@devnull, 예이 두 가지를 보았습니다. http://stackoverflow.com/questions/13861594/python-3-3-programming-valueerror-invalid-literal-for-int-with-base-10-be 및 이 http://stackoverflow.com/questions/1841565/valueerror-invalid-literal-for-int-with-base-10. 도움이되지 못했습니다. – Newtt

답변

5

시는 명시 적으로

ct = Classified.objects.filter(name__icontains=q).filter(city__name__exact=city) 
+0

왜 'int'로 캐스팅 할 때 원래의 에러가 발생 했습니까? (내 자신의 교화를 위해) – 2rs2ts

+1

그것은 city의 문자열 값을 리터럴 외래 키 (cities 테이블의 기본 키)로 변환하려고하기 때문에. City__exact는 해당 테이블의 하위 필드가 아닌 기본 키를 나타냅니다. – Bryan

+0

기본 키는 ...입니까? 나는 이것을 알아야하지만 장고가 생성하는 uid입니까? – 2rs2ts

관련 문제