django 에서 사용자 정의 필드 Field 설명
to_python()\#데이터베이스 데 이 터 를 python 데이터 로 변환 합 니 다.
from_db_value()\#데이터베이스 데 이 터 를 python 데이터 로 변환
get_pre_value()\#python 데 이 터 를 압축 하여 데이터베이스 에 저장 합 니 다.
get_db_pre_value()\#압축 된 데 이 터 를 데이터베이스 조회 집합 으로 변환
get_prep_lookup()\#필터 조건 지정
value_to_string()\#데이터 직렬 화
문자열,날짜,정수 등 보다 더 복잡 한 데이터 구 조 를 만 들 려 면 to 를 다시 써 야 할 수도 있 습 니 다.python 과 fromdb_value()방법(Django 가 제공 하 는 SubfileBase 메타 클래스,그 는 할당 할 때 항상 to 를 호출 합 니 다.python()
간단 한 ListField 필드 형식
# _*_ coding:utf-8 _*_
from django.db import models
import ast
class ListField(models.TextField):
""" list
models.SubfieldBase to_python from_db_value
python
from_db_value python
to_python form
"""
__metacalss__ = models.SubfieldBase
description = 'Stores a python list'
def __init__(self, *args, **kwargs):
super(ListField,self).__init__(*args, **kwargs)
# def db_type(self, connection):
# if connection.setting_dict['ENGINE'] == 'django.db.backends.mysql':
# return 'listtype'
def from_db_value(self,value,expression,connection,context):
""" python """
if value is None:
value=[]
return value
if isinstance(value,list):
return value
return ast.literal_eval(value)
def to_python(self, value):
""" python
eval(value) value
ast Python 。
literal_eval() :
python ,
, 。
"""
if not value:
value = []
if isinstance(value, list):
return value
return ast.literal_eval(value)
def get_prep_value(self, value):
"""
python
python
:param value:
:return:
"""
if value is None:
return value
return str(value)
# def get_db_prep_value(self, value, connection, prepared=False):
# """ """
# value = super(ListField, self).get_db_prep_value()
# if value is not None:
# return connection.Database.Binary(value)
# return value
#
def get_prep_lookup(self, lookup_type, value):
""" """
if lookup_type == 'exact':
return value
elif lookup_type == 'in':
return [self.get_prep_value(v) for v in value]
else:
return TypeError('lookup type %r not supported'%lookup_type)
def value_to_string(self, obj):
"""
Field._get_val_from_obj(obj)
"""
value = self._get_val_from_obj(obj)
return self.get_db_prep_value(value)
이 편 은 django 에서 사용자 정의 필드 Field 에 대한 상세 한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 하 실 수 있 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.