참고: 새로운 애플리케이션을 빌드하는 개발자는 NDB 클라이언트 라이브러리를 사용하는 것이 좋습니다. NDB 클라이언트 라이브러리는 이 클라이언트 라이브러리와 비교할 때 Memcache API를 통한 자동 항목 캐싱과 같은 여러 이점이 있습니다. 현재 이전 DB 클라이언트 라이브러리를 사용 중인 경우 DB에서 NDB로의 마이그레이션 가이드를 참조하세요.
App Engine Datastore는 데이터 항목의 속성에서 고정된 값 유형 집합을 지원합니다.
Property
클래스는 기본값 유형과 변환되는 새 유형을 정의할 수 있으며 값 유형을
Expando
동적 속성과
ListProperty
집계 속성 모델에서 직접 사용할 수 있습니다.
다음 표에서는 값이 기본 데이터 유형과 직접 대응하는 Property 클래스를 설명합니다. 이러한 값 유형을 Expando 동적 속성 또는 ListProperty 집계 유형에서 사용할 수 있습니다.
Property 클래스 | 값 유형 | 정렬 순서 |
---|---|---|
IntegerProperty
|
int
long
(64비트)
|
숫자 |
FloatProperty
|
float
|
숫자 |
BooleanProperty
|
bool
|
False < True |
StringProperty
|
str
unicode
|
유니코드(str 은 ASCII로 취급됨) |
TextProperty
|
db.Text
|
없음 |
ByteStringProperty
|
ByteString
|
바이트순 |
BlobProperty
|
db.Blob
|
없음 |
DateProperty
TimeProperty
DateTimeProperty
|
datetime.date
datetime.time
datetime.datetime
|
시간순 |
GeoPtProperty
|
db.GeoPt
|
위도순 우선 적용 후 경도순 |
PostalAddressProperty
|
db.PostalAddress
|
유니코드 |
PhoneNumberProperty
|
db.PhoneNumber
|
유니코드 |
EmailProperty
|
db.Email
|
유니코드 |
UserProperty
|
users.User
|
이메일 주소 (유니코드 순서). UserProperty 클래스 설명 아래의 참고에 따라 UserProperty 를 사용하지 말아야 합니다. |
IMProperty
|
db.IM
|
유니코드 |
LinkProperty
|
db.Link
|
유니코드 |
CategoryProperty
|
db.Category
|
유니코드 |
RatingProperty
|
db.Rating
|
숫자 |
ReferenceProperty
SelfReferenceProperty
|
db.Key
|
경로 요소 기준 (종류, 식별자, 종류, 식별자...) |
blobstore.BlobReferenceProperty
|
blobstore.BlobInfo
|
바이트순 |
ListProperty
StringListProperty
|
지원되는 유형의
list
|
오름차순은 최소 요소 기준, 내림차순은 최대 요소 기준 |
데이터 저장소 값 유형
Datastore 항목 속성 값은 다음 유형 중 하나입니다. Model
정의와 함께 사용할 해당 Property
클래스의 목록은 위 내용을 참조하세요.
Python 표준 유형과 users.User
를 제외하고 이 섹션에서 설명하는 모든 클래스는 google.appengine.ext.db
모듈에서 제공됩니다.
str
또는unicode
-
짧은 문자열(1,500바이트 이하)
str
값은ascii
코덱으로 인코딩된 텍스트로 간주되며 저장되기 전에unicode
값으로 변환됩니다. 이 값은 Datastore에서unicode
값으로 반환됩니다. 다른 코덱을 사용하는 짧은 문자열의 경우unicode
값을 사용합니다.short 문자열은 데이터 저장소에 의해 색인이 생성되며 필터 및 정렬 순서에서 사용 가능합니다. 길이가 1,500바이트를 초과하는 텍스트 문자열(색인이 생성되지 않음)에는
Text
인스턴스를 사용합니다. 1,500바이트를 초과하는 인코딩되지 않은 바이트 문자열(색인이 생성되지 않음)에는Blob
인스턴스를 사용합니다. 색인을 생성해야 하며 텍스트가 아니고 인코딩되지 않은 최대 1,500바이트의 바이트 문자열(문자가 아님)에는ByteString
인스턴스를 사용합니다.모델 속성:
StringProperty
bool
-
부울 값(
True
또는False
)모델 속성:
BooleanProperty
int
또는long
-
정수 값(최대 64비트)
Python
int
값은 저장 전에 Pythonlong
값으로 변환됩니다.int
로 저장된 값은long
으로 반환됩니다.64비트를 초과하는
long
이 할당되면 최하위 64비트만 저장됩니다.모델 속성:
IntegerProperty
float
-
부동 소수점 수
모델 속성:
FloatProperty
datetime.datetime
-
날짜 및 시간.
datetime
모듈 문서를 참조하세요.datetime
값에tzinfo
속성이 있으면 저장 시 UTC 시간대로 변환됩니다. Datastore에서 반환되는 값은 UTC이며tzinfo
는None
입니다. 날짜 및 시간 값이 특정 시간대여야 하는 애플리케이션은 값을 업데이트할 때tzinfo
를 정확히 설정하고 값에 액세스할 때 값을 이 시간대로 변환해야 합니다.일부 라이브러리는
TZ
환경 변수를 사용하여 날짜-시간 값에 적용되는 시간대를 제어합니다. App Engine은 이 환경 변수를"UTC"
로 설정합니다. Python 코드 외부에서는 환경 변수의 변경사항이 표시되지 않으므로 애플리케이션에서 이 변수를 변경해도 일부 날짜/시간 함수의 동작은 변경되지 않습니다.특정 시간대로만 그리고 특정 시간대로부터만 값을 변환하는 경우 커스텀
datetime.tzinfo
를 구현하여 Datastore에서 값을 변환할 수 있습니다.import datetime import time class Pacific_tzinfo(datetime.tzinfo): """Implementation of the Pacific timezone.""" def utcoffset(self, dt): return datetime.timedelta(hours=-8) + self.dst(dt) def _FirstSunday(self, dt): """First Sunday on or after dt.""" return dt + datetime.timedelta(days=(6-dt.weekday())) def dst(self, dt): # 2 am on the second Sunday in March dst_start = self._FirstSunday(datetime.datetime(dt.year, 3, 8, 2)) # 1 am on the first Sunday in November dst_end = self._FirstSunday(datetime.datetime(dt.year, 11, 1, 1)) if dst_start <= dt.replace(tzinfo=None) < dst_end: return datetime.timedelta(hours=1) else: return datetime.timedelta(hours=0) def tzname(self, dt): if self.dst(dt) == datetime.timedelta(hours=0): return "PST" else: return "PDT" pacific_time = datetime.datetime.fromtimestamp(time.mktime(utc_time.timetuple()), Pacific_tzinfo())
datetime
모듈 문서(datetime.tzinfo
포함)를 참조하세요. 타사 모듈pytz
도 참조하세요. 단,pytz
배포에는 파일이 많습니다.DateTimeProperty
모델 속성 클래스에는 모델 인스턴스가 저장된 날짜와 시간을 자동으로 사용하는 기능과 같은 기능이 포함됩니다. 이는 모델의 기능이며 원시 Datastore 값(예:Expando
동적 속성)에서는 사용될 수 없습니다.모델 속성:
DateTimeProperty
,DateProperty
,TimeProperty
list
-
지원되는 데이터 유형으로 구성된 값 목록입니다.
list
는Expando
동적 속성의 값으로 사용될 경우 빈 목록일 수 없습니다. 목록 값이 저장되는 방식 때문입니다. 목록 속성에 항목이 없는 경우 데이터 저장소에 표현이 없습니다. 정적 속성과ListProperty
클래스를 사용하여 속성의 빈 목록 값을 표현할 수 있습니다.모델 속성:
ListProperty
-
db.Key
-
다른 데이터 저장소 항목의 키.
참고: 키 문자열은 1,500바이트 이하로 제한됩니다.
m = Employee(name="Susan", key_name="susan5") m.put() e = Employee(name="Bob", manager=m.key()) e.put() m_key = db.Key.from_path("Employee", "susan5") e = Employee(name="Jennifer", manager=m_key)
-
blobstore.BlobKey
-
Blobstore 값의 키로 값이 업로드될 때 Blobstore에서 생성됩니다.
-
users.User
-
Google 계정이 있는 사용자
사용자가 자신의 이메일 주소를 변경해도 Datastore에 있는
user.User
값은 업데이트되지 않습니다. 따라서 고유 ID와 함께 이메일 주소를 포함하는users.User
를UserProperty
값으로 저장하지 않는 것이 좋습니다. 사용자가 이메일 주소를 변경한 경우 이전에 저장한user.User
값과 새user.User
값을 비교하면 서로 일치하지 않게 됩니다. 대신user.User
값의user_id()
를 사용자의 안정적인 고유 식별자로 사용합니다.모델 속성:
UserProperty
- class Blob(arg=None)
-
바이트 문자열로 된 바이너리 데이터. 기본 제공
str
유형의 서브클래스입니다.Blob 속성의 색인이 생성되지 않으므로 이 속성을 필터 또는 정렬 순서에서 사용할 수 없습니다.
Blob은 이미지와 같은 바이너리 데이터용입니다.
str
값을 취하지만 이 값은 바이트 문자열로 저장되며 텍스트로 인코딩되지 않습니다. 대용량 텍스트 데이터에는Text
인스턴스를 사용합니다.모델 속성:
BlobProperty
class MyModel(db.Model): blob = db.BlobProperty() m = MyModel() m.blob = db.Blob(open("image.png", "rb").read())
XML에서 blob은 바이너리 데이터 포함 여부에 관계없이 base-64로 인코딩됩니다.
- class ByteString(arg)
-
1,500바이트 이하의 짧은 blob 값('바이트 문자열') ByteString은
str
의 서브클래스이며 인코딩되지 않은str
값을 생성자의 인수로 받습니다.ByteString은 Datastore에 의해 색인이 생성되며, 필터 및 정렬 순서에 사용할 수 있습니다. 길이가 1,500바이트를 초과하는 바이트 문자열(색인이 생성되지 않음)에는
Blob
인스턴스를 사용합니다. 인코딩된 텍스트 데이터에는str
(짧은 경우, 색인이 생성됨) 또는Text
(긴 경우, 색인이 생성되지 않음)를 사용합니다.모델 속성:
ByteStringProperty
- class Text(arg=None, encoding=None)
-
긴 문자열. 기본 제공
unicode
유형의 서브클래스입니다.arg
unicode
또는str
값. arg가str
이면 encoding으로 지정된 인코딩을 사용하여 파싱되고 인코딩이 지정되지 않은 경우ascii
를 사용하여 파싱됩니다. encoding에 사용 가능한 값은 Standard Encodings 목록을 참조하세요.값이 단순한
str
또는unicode
인 항목 속성과 달리 Text 속성의 길이는 1,500바이트를 초과할 수 있습니다. 그러나 Text 속성은 색인이 생성되지 않으며 필터 또는 정렬 순서에 사용할 수 없습니다.모델 속성:
TextProperty
class MyModel(db.Model): text = db.TextProperty() m = MyModel() m.text = db.Text(u"kittens") m.text = db.Text("kittens", encoding="latin-1")
- class Category(tag)
-
카테고리 또는 'tag'. 기본 제공
unicode
유형의 서브클래스입니다.모델 속성:
CategoryProperty
class MyModel(db.Model): category = db.CategoryProperty() m = MyModel() m.category = db.Category("kittens")
XML에서 Atom
Category
요소입니다. - class Email(email)
-
이메일 주소. 기본 제공
unicode
유형의 서브클래스입니다.속성 클래스와 값 클래스 모두 이메일 주소의 유효성 검사를 수행하지 않고 단순히 값을 저장하기만 합니다.
모델 속성:
EmailProperty
class MyModel(db.Model): email_address = db.EmailProperty() m = MyModel() m.email_address = db.Email("larry@example.com")
XML에서
gd:email
요소입니다. - class GeoPt(lat, lon=None)
-
부동 소수점 위도 및 경도 좌표로 표현되는 지리적 지점
모델 속성:
GeoPtProperty
XML에서
georss:point
요소입니다. - class IM(protocol, address=None)
-
채팅 핸들
protocol은 채팅 메시지 서비스의 표준 URL입니다. 가능한 값 중 일부는 다음과 같습니다.
프로토콜 설명 sip SIP/SIMPLE xmpp XMPP/Jabber http://aim.com/ AIM http://icq.com/ ICQ http://messenger.msn.com/ MSN Messenger http://messenger.yahoo.com/ Yahoo Messenger http://sametime.com/ Lotus Sametime http://gadu-gadu.pl/ Gadu-Gadu unknown 알 수 없거나 지정되지 않음 address는 핸들의 주소입니다.
모델 속성:
IMProperty
class MyModel(db.Model): im = db.IMProperty() m = MyModel() m.im = db.IM("http://example.com/", "Larry97")
XML에서
gd:im
요소입니다. - class Link(link)
-
정규화된 URL. 기본 제공
unicode
유형의 서브클래스입니다.모델 속성:
LinkProperty
class MyModel(db.Model): link = db.LinkProperty() m = MyModel() m.link = db.Link("http://www.google.com/")
XML에서 Atom
Link
요소입니다. - class PhoneNumber(phone)
-
사람이 읽을 수 있는 전화번호. 기본 제공
unicode
유형의 서브클래스입니다.모델 속성:
PhoneNumberProperty
class MyModel(db.Model): phone = db.PhoneNumberProperty() m = MyModel() m.phone = db.PhoneNumber("1 (206) 555-1212")
XML에서
gd.phoneNumber
요소입니다. - class PostalAddress(address)
-
우편 주소. 기본 제공
unicode
유형의 서브클래스입니다.모델 속성:
PostalAddressProperty
class MyModel(db.Model): address = db.PostalAddressProperty() m = MyModel() m.address = db.PostalAddress("1600 Ampitheater Pkwy., Mountain View, CA")
XML에서
gd:postalAddress
요소입니다. - class Rating(rating)
-
사용자가 제공한 콘텐츠 평점(0~100 사이의 정수). 기본 제공
long
유형의 서브클래스입니다. 이 클래스는 값이 0~100 사이의 정수인지 확인하고 값이 유효하지 않으면BadValueError
가 발생합니다.모델 속성:
RatingProperty
class MyModel(db.Model): rating = db.RatingProperty() m = MyModel() m.rating = db.Rating(97)
XML에서
gd:rating
요소입니다.
속성 클래스
google.appengine.ext.db
에서 제공하는 모든 모델 속성 클래스는 기본 클래스 Property
의 서브클래스이며 기본 생성자의 모든 인수를 지원합니다. 이러한 인수는 기본 클래스 문서를 참조하세요.
google.appengine.ext.db
패키지는 다음과 같은 모델 속성 클래스를 제공합니다.
- class BlobProperty(...)
-
해석되지 않은 바이너리 데이터 컬렉션.
blob 데이터는 바이트 문자열입니다. 인코딩이 수반될 수 있는 텍스트 데이터에는
TextProperty
를 사용합니다.값 유형:
Blob
- class BooleanProperty(...)
-
부울 값(
True
또는False
)값 유형:
bool
- class ByteStringProperty(verbose_name=None, ...)
-
1,500바이트 이하의 짧은 blob 값('바이트 문자열')
ByteStringProperty
값의 색인이 생성되므로 이 값을 필터 및 정렬 순서에 사용할 수 있습니다.값이 어떤 식으로도 인코딩되지 않는다는 점을 제외하면
StringProperty
와 비슷합니다. 바이트는 문자 그대로 정렬됩니다.ByteStringProperty
가 필요한 경우 값은 빈 문자열이 될 수 없습니다.값 유형:
ByteString
- class CategoryProperty(...)
-
'태그' 카테고리, 설명하는 단어 또는 문구.
값 유형:
Category
- class DateProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)
-
시간이 포함되지 않은 날짜. 자세한 내용은
DateTimeProperty
를 참조하세요.값 유형:
datetime.date
. 내부적으로datetime.datetime
으로 변환됨 - class DateTimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)
-
날짜 및 시간.
auto_now가
True
이면 모델 인스턴스가 Datastore에 저장될 때마다 속성 값이 현재 시간으로 설정되어 속성의 이전 값을 덮어씁니다. 모델 인스턴스의 '최근 수정' 날짜 및 시간을 추적하는 데 유용합니다.auto_now_add가
True
이면 속성에 이미 값이 할당된 경우를 제외하고 모델 인스턴스가 처음 Datastore에 저장될 때 속성 값이 현재 시간으로 설정됩니다. 모델 인스턴스의 '만든' 날짜 및 시간을 저장하는 데 유용합니다.날짜/시간 값은 UTC 시간대로 저장되며 이 시간대를 통해 반환됩니다. 시간대 관리 방법은
datetime.datetime
을 참조하세요.값 유형:
datetime.datetime
- class EmailProperty(...)
-
이메일 주소.
속성 클래스와 값 클래스 모두 이메일 주소의 유효성 검사를 수행하지 않고 단순히 값을 저장하기만 합니다.
값 유형:
Email
- class FloatProperty(...)
-
부동 소수점 수
값 유형:
float
- class GeoPtProperty(...)
-
부동 소수점 위도 및 경도 좌표로 표현되는 지리적 지점
값 유형:
GeoPt
- class IMProperty(...)
-
채팅 핸들
값 유형:
IM
- class IntegerProperty(...)
-
정수 값(최대 64비트)
Python
int
값은 저장 전에 Pythonlong
값으로 변환됩니다.int
로 저장된 값은long
으로 반환됩니다.64비트를 초과하는
long
이 할당되면 최하위 64비트만 저장됩니다. - class LinkProperty(...)
-
정규화된 URL.
값 유형:
Link
- class ListProperty(item_type, verbose_name=None, default=None, ...)
-
item_type으로 지정된 유형의 값 목록
쿼리에서 목록 속성을 값에 비교하면 목록의 구성원을 대상으로 테스트가 수행됩니다.
list_property
=
value
는 값이 목록에 나타나는지 여부를 테스트하고list_property
<
value
는 목록 구성원 중에서 지정된 값보다 작은 구성원이 있는지 여부를 테스트하는 식입니다.쿼리는 목록 값 두 개를 비교할 수 없습니다. 각 요소에서 멤버십을 개별적으로 테스트하지 않고는 두 목록의 동일함을 테스트할 방법이 없습니다.
item_type은 목록 항목의 유형으로, Python 유형 또는 클래스입니다. 목록 값의 모든 항목에는 유형이 지정되어야 합니다. item_type은 Datastore 값 유형 중 하나여야 하며
list
가 될 수 없습니다.ListProperty
의 값은None
일 수 없습니다. 하지만 빈 목록이 될 수 있습니다.None
이 default 인수에 지정되는 경우(또는 default 인수가 지정되지 않는 경우) 속성의 기본값은 빈 목록입니다.팁:
ListProperty
집계 유형은Property
클래스를 사용하지 않으므로 자동 값 및 유효성 검사와 같은Property
클래스 기능은 목록 값의 구성원에 자동으로 적용되지 않습니다.Property
클래스를 사용하여 구성원 값의 유효성을 검사하려면 이 클래스를 인스턴스화하고 값에validate()
메서드를 호출합니다.default는 목록 속성의 기본값입니다.
None
인 경우 기본값은 빈 목록입니다. 목록 속성은 커스텀 검사기를 정의하여 빈 목록을 금지할 수 있습니다.목록 속성 및 값에 대한 자세한 내용은 데이터 모델링 페이지를 참조하세요.
값 유형: 지정된 유형으로 된 값의 Python
list
- class PhoneNumberProperty(...)
-
사람이 읽을 수 있는 전화번호.
값 유형:
PhoneNumber
- class PostalAddressProperty(...)
-
우편 주소.
값 유형:
PostalAddress
- class RatingProperty()
-
사용자가 제공한 콘텐츠 평점(0~100 사이의 정수).
값 유형:
Rating
- class ReferenceProperty(reference_class=None, verbose_name=None, collection_name=None, ...)
-
다른 모델 인스턴스에 대한 참조. 예를 들어 참조는 속성이 있는 모델과 속성에 의해 참조되는 모델 간의 다대일 관계를 나타낼 수 있습니다.
reference_class는 참조되는 모델 인스턴스의 모델 클래스입니다. 지정되면 클래스의 모델 인스턴스만 이 속성에 할당될 수 있습니다.
None
인 경우 모든 모델 인스턴스가 이 속성의 값이 될 수 있습니다.collection_name은 참조되는 모델 클래스에 제공할 속성의 이름입니다. 속성 값은 항목을 참조하는 모든 항목의
Query
입니다. collection_name이 설정되지 않으면modelname_set
(소문자로 된 참조되는 모델의 이름 뒤에_set
가 추가됨)이 사용됩니다.참고: 같은 모델 클래스를 참조하는 동일한 모델 내에 속성이 여러 개 있으면 collection_name을 설정해야 합니다. 그렇지 않으면 기본 이름이 생성될 때
DuplicatePropertyError
가 발생합니다.ReferenceProperty
는 모델 인스턴스를 속성 값으로 자동으로 참조 및 역참조합니다. 모델 인스턴스는 참조 속성에 직접 할당될 수 있으며 키가 사용됩니다.ReferenceProperty
값은 모델 인스턴스와 마찬가지 방식으로 사용될 수 있으며 이 방식으로 처음 사용될 때 Datastore 항목을 가져오고 모델 인스턴스가 생성됩니다. 영향을 받지 않는 참조 속성은 불필요한 데이터를 쿼리하지 않습니다.class Author(db.Model): name = db.StringProperty() class Story(db.Model): author = db.ReferenceProperty(Author) story = db.get(story_key) author_name = story.author.name author = db.get(author_key) stories_by_author = author.story_set.get()
Key
값과 마찬가지로 참조 속성 값이 존재하지 않는 데이터 항목을 참조할 가능성이 있습니다. 참조되는 항목이 Datastore에서 삭제되면 이 항목의 참조는 업데이트되지 않습니다. 존재하지 않는 항목에 액세스하면ReferencePropertyResolveError
가 발생합니다.항목을 삭제해도 참조 속성에 의해 참조되는 항목은 삭제되지 않습니다.
값 유형:
db.Key
- class SelfReferenceProperty(verbose_name=None, collection_name=None, ...)
-
같은 클래스의 다른 모델 인스턴스에 대한 참조(
ReferenceProperty
참조).값 유형:
db.Key
- class StringListProperty(verbose_name=None, default=None, ...)
-
Python
str
또는unicode
(basestring
) 값의 목록 속성과 유사합니다. - class StringProperty(verbose_name=None, multiline=False, ...)
-
짧은 문자열. 1,500바이트 이하의 Python
str
또는unicode
(basestring
) 값을 취합니다.StringProperty
값의 색인이 생성되므로 이 값을 필터 및 정렬 순서에 사용할 수 있습니다.multiline이
False
이면 값은 라인피드 문자를 포함할 수 없습니다.djangoforms
라이브러리는 이를 사용하여 데이터 모델에서 텍스트 필드와 텍스트 영역 필드 간의 차이점을 구현합니다. 다른 곳에서도 이 라이브러리를 비슷한 용도로 사용할 수 있습니다.문자열 속성이 필요한 경우 값은 빈 문자열이 될 수 없습니다.
- class TextProperty()
-
긴 문자열.
StringProperty
와 달리TextProperty
값은 길이가 1,500바이트를 초과할 수 있습니다. 그러나TextProperty
값의 색인이 생성되지 않으므로 이 값을 필터 또는 정렬 순서에 사용할 수 없습니다.TextProperty
값은 텍스트를 텍스트 인코딩과 함께 저장합니다. 바이너리 데이터의 경우BlobProperty
를 사용합니다.텍스트 속성이 필요한 경우 값은 빈 문자열이 될 수 없습니다.
값 유형:
Text
- class TimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, ...)
-
날짜 없는 시간. Python 표준 라이브러리
datetime.time
값을 사용합니다. 자세한 내용은DateTimeProperty
를 참조하세요.값 유형:
datetime.time
. 내부적으로datetime.datetime
으로 변환됨 - class UserProperty(verbose_name=None, auto_current_user=False, auto_current_user_add=False, ...)
-
중요:
UserProperty
에는 이메일 주소와 사용자의 고유 ID가 포함되어 있으므로 이를 저장하지 않는 것이 좋습니다. 사용자가 자신의 이메일 주소를 변경하고 이전에 저장한User
값과 새User
값을 비교하면 서로 일치하지 않게 됩니다.Google 계정이 있는 사용자
auto_current_user가
True
이면 모델 인스턴스가 Datastore에 저장될 때마다 속성 값은 현재 로그인한 사용자로 설정되어 속성의 이전 값을 덮어씁니다. 모델 인스턴스를 수정하는 사용자를 추적하는 데 유용합니다.auto_current_user_add가
True
이면 속성에 이미 값이 할당된 경우를 제외하고 모델 인스턴스가 Datastore에 처음 저장될 때 속성 값이 현재 로그인한 사용자로 설정됩니다. 모델 인스턴스를 만드는 사용자를 추적하는 데 유용합니다. 모델 인스턴스를 만드는 사용자는 나중에 이를 수정하는 사용자와 다를 수 있습니다.UserProperty는 기본값을 받지 않습니다. 기본값은 모델 클래스를 처음 가져올 때 설정되며 가져오기 캐시 사용 시 현재 로그인한 사용자가 아닐 수 있습니다.
값 유형:
users.User