2011-12-22 2 views
0

다른 상황에서 다른 결과를 얻는 Django queryset이 ​​있는데 혼란 스럽습니다.Django queryset이 ​​쉘과 서버에서 다른 결과를 반환합니다.

texts = Text.objects.filter(keywords__icontains=word) 

모델 : 그대로 복사 호출

class Text(models.Model): 

    views = models.IntegerField(default=0) 
    keywords = models.CharField(max_length=250) 
    response = models.CharField(max_length=140) 

는 ./manage.py 쉘 예상되는 결과를 얻을 수 있지만, 서버에서 아무것도 찾을 수 없습니다.

Text.objects.all()을 호출하면 결과가 위로 올라 오지만 어떤 이유로 서버의 필터가 다른 경우와 같은 결과를 찾지 못합니다.

왜요?

+0

동일한 settings.py 파일을 사용하는 동일한 컴퓨터에 있습니까? 두 머신 모두에서 syncdb를 실행하지 않았다면? – mtnpaul

+1

서버에서'word'를 어떻게 정의하고 있습니까? (아마도 views.py에서)? 너의 문제가 거기에 놓여있을거야. –

+0

동일한 settings.py를 사용하여 동일한 컴퓨터에 있습니다. – sambacore

답변

0

프로덕션 데이터베이스 엔진이 dev (로컬 컴퓨터에서 manage.py shell을 실행한다고 가정)과 다르기 때문일 수 있습니다.

특히 문자열 일치에서의 동작은 according to your database backend 일 수 있습니다.

또는 데이터베이스 내용이 다를 수 있습니까?

manage.py shell이 동일한 데이터베이스에 도달하면 결과는 동일해야합니다. 귀하의 요청 (웹 서버로부터)이 정확한지 확인하십시오? 데이터베이스 로그를 확인하십시오.

+0

동일한 데이터베이스와 백엔드를 사용하는 동일한 서버에서이 작업을 수행하고 있습니다. 앞에서 말했듯이, objects.all()에는 필요한 모든 속성이 포함 된 객체가 포함되어 있지만, 필터링 할 때는 제작 사이트에서만 볼 수 있습니다. – sambacore

관련 문제