나는 원숭이 패치를해야한다고 생각합니다.
본인은 본 적이 없지만 재미있는 일이었습니다. 이 신경 보인다 모든 속성 _unique
이 참 또는 거짓이라는 것이다 (우리가 unique=True
을 통과해야 것) 모델 필드 init 함수
def __init__(self, verbose_name=None, name=None, primary_key=False,
max_length=None, unique=False, blank=False, null=False,
db_index=False, rel=None, default=NOT_PROVIDED, editable=True,
serialize=True, unique_for_date=None, unique_for_month=None,
unique_for_year=None, choices=None, help_text='', db_column=None,
db_tablespace=None, auto_created=False, validators=[],
error_messages=None):
self.name = name
self.verbose_name = verbose_name
self.primary_key = primary_key
self.max_length, self._unique = max_length, unique
를 확인하십시오. 나머지 장고 마술은 그 속성이 어떻게 설정되었는지 신경 쓰지 않아야합니다. 그래서 원숭이 패치를합시다!
이
INSTALLED_APPS
어딘가에 원숭이 패치 응용 프로그램을 넣어, 당신의
models.py
(자동로드)에 넣고 :
CREATE TABLE "auth_user" (
"id" integer NOT NULL PRIMARY KEY,
"username" varchar(30) NOT NULL,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL,
"email" varchar(75) NOT NULL UNIQUE,
"password" varchar(128) NOT NULL,
"is_staff" bool NOT NULL,
"is_active" bool NOT NULL,
"is_superuser" bool NOT NULL,
"last_login" datetime NOT NULL,
"date_joined" datetime NOT NULL
)
: 충분히
from django.contrib.auth.models import User
User._meta.get_field("username")._unique = False
User._meta.get_field("email")._unique = True
물론, 장고는 다음과 같은 SQL을 생성