2011-10-20 2 views
1

필자는 Postgres 정수 배열 필드에 매핑되는 쉼표로 구분 된 정수 필드가있는 모델 클래스를 사용합니다. 내가 할 수 있기를 원하는 것은CommaSeparatedIntegerField의 색인 값 필터링

class Observation(models.Model): 
    frequencies = models.CommaSeparatedIntegerField(max_length=200) 

는 배열의 인덱스 값의 비교를 수행하는 필터 (또는 뭔가 다른 적절한) 인터페이스를 사용합니다. 예 :

Observation.objects.filter(frequencies[100]__equals = 10) 

는 내가이 작업을 수행 할 수 없습니다 알고 어떻게 필터 인터페이스 인덱스 배열 필드에 나는 문서에서 볼 수 없습니다. 이 작업을 데이터베이스의 SQL이 수행하도록합니다 (코드에서 수행해야 할 수도 있음).

나는 extra() 기능을 사용할 수 있지만 더 좋은 방법이 있는지 알고 싶습니다.

감사합니다.

+0

DB 필드에서 해당 배열을 검색하는 방법이 의심 스럽습니다. 그 필드 유형은 charfield로 저장되기 때문에 (적어도 MySQL에서는). SUBSTRING()과 함께 extra()를 사용하는 것이 최선의 방법이라고 생각됩니다. http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr – AJJ

답변

2

쉼표로 구분 된 필드 내에서 특정 엔티티를 검색해야하는 경우 해당 데이터가 올바른 형식인지 여부를 고려해야합니다. 아마도 별도의 테이블에 대한 외래 키가 더 적절할 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. – Dave