2012-06-15 4 views
1

최근에 django 프로젝트를 mysql에서 postgresql로 마이그레이션했으며 프로세스에서 사용중인 필터가 손상되었습니다. 지금의 오류 발생, 그러나장고에서 부울을 필터로 사용하는 데 문제가 있습니다

return (model_class.objects.filter(status='0',ir=1).count() * 2) + 
model_class.objects.filter(status='1',ir=1).count() 

을 : 오래된 필터는이처럼 보였다 내가 IR =를 '1'로 설정하려고했습니다

DatabaseError at /report/trip/publication 
operator does not exist: integer = boolean 
LINE 1: ...AND "publication"."ir" = true) 
          ^
HINT: No operator matches the given name and argument type(s). 
You might need to add explicit type casts. 

, 그리고 난 그것을 설정하려고했습니다 '3'(왜 도대체 아니야?),하지만 내가 설정 한 것에 관계없이 동일한 오류 메시지가 계속 나타납니다. 이는 다른 것이 뭔가를 일으키고 있음을 암시하는 것처럼 보입니다. 나는 그것을 "반환하지 않는다"라고 설정했고, 그것은 나에게 여과되지 않은 목록을 주었다. 내가 볼 수있는 유일한 충돌 가능성은 위로 정상 선언 있다는 것입니다,하지만 (그 전에하지 않았다) 문제가되지해야합니다

class Publication(Unit): 
    ir = models.BooleanField(default=False,null=False,verbose_name="Is IR") 

내 포스트 그레스 데이터베이스는 다음과 같은 데이터 유형이 필드가 있습니다 :

status | character varying 
ir  | integer 

말할 것도없이, 나는 매우 혼란 스럽다. 나는 이것을 설정하지 않았다 - 나는 단지 그것을 고치려고 노력하고있다. 그리고 그 과정에서 무언가를 배운다. 이것을 필터링하는 적절한 방법은 무엇입니까? 모든 의견을 주시면 감사하겠습니다.

답변

1

Postgres에서 BooleanField는 "부울"유형입니다.

빠른 수정은 Postgres에서 열을 변경하는 것입니다.

관련 문제