Django에서 'max_length'의 최대 크기는 얼마입니까?


87

이것은 내 모델입니다.

class Position(models.Model):
    map = models.ForeignKey(Map,primary_key=True)
    #members=models.CharField(max_length=200)
    LatLng = models.CharField(max_length=40000)
    infowindow = models.CharField(max_length=40000)

그러나 실행할 수 없습니다. max_length매개 변수 의 최대 크기는 얼마입니까?

답변:


106

이는 데이터베이스 백엔드에 따라 다릅니다. 장고 DB 문서는 것을, 당신을 말할 것이다 max_length=255항상 작동을 보장합니다.

질문에 지정한 금액이 필요한 경우 TextField 를 사용하는 것이 좋습니다 .


2
이 경우 DB의 경우 고유 옵션을 255로 제한한다는 사실과 함께 개인적으로 255보다 큰 CharField가 필요하면 TextField로 만드는 만트라를 고수합니다.
digitaldreamer

13
TextField의 최대 크기도 DB에 따라 다릅니다. MySQL의 경우 약 4 조 달러입니다.
Justin Abrahms 2010

2
MySQL에서 Charfield는 varchar, 최대 65,535 (하지만 이는 최대 행 크기이기도 함) 입니다. stackoverflow.com/questions/13506832/…를 참조하십시오 . 큰 최대 크기를 사용하는 데 따른 불이익은 없으며 MySQL은 실제로 필요한 것을 사용합니다. Textfield는 성능과 관련하여 다르게 처리되므로 다른 테이블의 다른 필드로 인덱싱하고 (DB 페이지 당 인덱싱 된 행이 많을수록 좋음) 필요한 항목을 찾은 다음 이제 알려진 키로 Textfield를 가져 오는 것이 좋습니다.
Aviah Laor

2
TextField는> 255 문자열에 대해 괜찮은 선택이지만 max_length모델 (또는 데이터베이스) 수준 에서는 적용되지 않습니다 . 이것은 max_lengthDjango가 적용 하는 것을 지정할 수있는 CharField의 경우와 달리 일부 유효성 검사 논리를 복잡하게 만들 수 있습니다 .
elnygren 2017 년

1
링크 된 단락은 "VARCHAR 열 유형으로 저장된 모든 필드는 필드에 대해 unique = True를 사용하는 경우 최대 길이가 255 자로 제한됩니다. 이는 CharField, SlugField에 영향을줍니다."
Chris

6

사용 TextField하는 대신

infowindow = models.TextField()

2
그주의 TextField유효성을 검사하지 않는 max_length데이터베이스 수준에서.
Chris Conlan

1

백엔드 데이터베이스에 따라 다릅니다. MySQL 5.6을 사용하는 경우 65,535 개로 제한됩니다. 위를 사용하는 경우 1024도 허용되지만 그 이상은 허용되지 않습니다.

class Demo(models.Model):
    max_test = models.CharField(max_length=1024)

MySQL 5.7에서 위에서 실행했습니다.


1
이것이 작동하는지 여부는 이미 수락 된 답변에서 언급 한 것처럼 사용 된 데이터베이스 백엔드에 따라 다릅니다. 이것이 작동 할 수 있지만 더 나은 해결책은 TextField를 사용하는 것입니다.
colidyre

0

실제로 모델에 사용하는 데이터베이스에 따라 다릅니다. PostgreSQL, MySQL 등은 설정과 제한이 다릅니다.

정말 긴 문자열이 필요하거나 변수의 길이가 확실하지 않은 경우 항상 variable=models.TextField().

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.