2011-10-20 44 views
1

我有一個模型類,它具有映射到Postgres整數數組字段的逗號分隔整數字段。在CommaSeparatedIntegerField中對索引值進行過濾

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

我希望能夠做的是使用的過濾器(或別的合適的)接口做在數組中的索引值進行比較。 實施例:

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

我知道我不能做到這一點,我不能在文檔中看到如何在過濾器接口索引的陣列字段。我希望這個動作由數據庫中的SQL執行(可能必須在代碼中完成)?

我知道我可以使用extra()功能,但我想知道是否有更好的方法?

謝謝。

+0

我懷疑有一種方法可以在數據庫層搜索該數組,因爲該字段類型保存爲charfield(至少在MySQL中)。使用extra()與SUBSTRING()在我看來是最好的方式:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substr – AJJ

回答

2

如果您發現自己需要在逗號分隔的字段中搜索特定的實體,那麼您應該考慮這是否是數據的正確格式。也許一個單獨的表的外鍵可能更合適。

+0

謝謝你的反饋 – Dave