我有Django的模型,看起來像這樣:數組拆分場
class Categories(models.Model):
"""
Model for storing the categories
"""
name = models.CharField(max_length=8)
keywords = models.TextField()
spamwords = models.TextField()
translations = models.TextField()
def __unicode__(self):
return self.name
class Meta:
verbose_name = _('Category')
verbose_name_plural = _('Categories')
字段keywords
,spamwords
和translations
包含逗號分隔文本的大塊。有人能告訴我怎麼能寫的模型,對於特定的字段名,返回值列表內的函數,這樣我可以訪問它是這樣的:
cat = Categories.objects.get(id=1)
print cat.keywords.to_array()
...返回現場數據,分割成陣列。 (分裂位是很簡單的,我知道該怎麼做 - string.split(',')
感謝
你的方法是,突然出現在我腦海中的第一個,但我不知道是否可以爲字段創建通用函數,而不是爲字段創建三個不同的函數。 如果您問我爲什麼要將數據存儲爲CSV - 這是因爲網站管理員經常從本地文本文件複製粘貼CSV數據。這種方法似乎比單獨輸入單詞要容易得多。 :) – 2010-07-06 16:24:04
明白了 - 不明白你在尋找一個通用函數;我認爲你很優雅。根據您的需求,您仍然可以接受CSV輸入,並編寫接受CSV並將其轉換爲M2M關係的自定義表單小部件 - 但我相信您知道自己需要實施的內容。 – Benj 2010-07-06 17:15:51
用你的方法(重載__getattribute__),你如何得到* unsplit *值,例如在django admin或任何你想要CSV文本的地方編輯時?我猜你可以做'',.join(cat.keywords)'但看起來...... 通用 def get_word_list(self,name): 如果['keywords','spamwords' ,'翻譯']: return getattr(self,name).split(',') ? – Benj 2010-07-06 20:24:47