Django 1.7 auth_user独特的电子邮件

时间:2014-12-10 23:55:58

标签: python django

我在auth_user表

上创建唯一的电子邮件字段时遇到问题

在Django 1.6版本上 我将该字符串添加到huote / settings.py中,一切正常 User._meta.get_field( '电子邮件')._独特=真

在1.7版本上,我尝试下面这个例子,因为我有错误 django.core.exceptions.AppRegistryNotReady:尚未加载模型。

但它不起作用

- huote / apps.py -

from django.apps import AppConfig
from django.contrib.auth.models import User

class YourAppConfig(AppConfig):
    name="huote"

    def ready(self):
        User._meta.get_field('email')._unique=True

- “huote / __ init__.py” -

default_app_config = 'huote.apps.YourAppConfig'

2 个答案:

答案 0 :(得分:0)

您必须创建自定义迁移以在数据库上创建唯一约束。

请参阅https://docs.djangoproject.com/en/1.7/topics/migrations/

你可以:

  • 使用MIGRATION_MODULES挖掘用户模型的迁移,但这可能是django的升级

  • 使用runsql

  • 在您的应用中创建自定义迁移

在任何情况下,您仍然需要使用代码(User._meta.get_field('email')._unique=True)来保持django对齐。

答案 1 :(得分:0)

我在app目录中创建文件,并为表auth_user

添加唯一索引

huote /迁移/ 0001_initial.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations

class Migration(migrations.Migration):

     dependencies = [
     ]

     operations = [
          migrations.RunSQL("create unique index unique_auth_user on auth_user(email);")
     ]