私はあなたがちょうど猿のパッチをするべきだと思います。
私は決してこれをやったことはありませんでしたが、これは楽しいものでした。気にするようであるすべての属性_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
確かに、Djangoは以下のSQLを生成し、