close
把 List 存入資料庫後
取出來後 程式碼卻不認得說這是個 List
嘗試過強制轉換後還是無法正常操作這個資料庫取出的 List
因為當你定義models中資料表欄位的儲存類型的時候,同時也把 List 轉換成別種型態儲存了
所以取出資料後很可能會認為是 str 型態
由於Django的models沒有內建的串列型態可以儲存
所以得自定義 field 來使用了
代碼如下:
#自定義field from django.db import models import ast class ListField(models.TextField): def __init__(self, *args, **kwargs): super(ListField, self).__init__(*args, **kwargs) def from_db_value(self, value, expression, connection, context): if not value: value = [] if isinstance(value, list): return value return ast.literal_eval(value) def get_prep_value(self, value): if value is None: return value return str(value) def value_to_string(self, obj): value = self._get_val_from_obj(obj) return self.get_db_prep_value(value)
使用方式如下:
class test(models.Model): ctest = ListField()
最後取出資料就會是 List 型態囉~
參考來源:
全站熱搜
留言列表