【问题标题】:Django Error in models.pymodels.py 中的 Django 错误
【发布时间】:2015-09-14 16:00:11
【问题描述】:

我有一个问题,当您创建类和同步数据库品牌时出现以下错误。

(DjangoAvanzado)Ricardos-MacBook-Pro:SistemaDiscusiones ricardoeduardosaucedo$ python manage.py syncdb  --settings=SistemaDiscusiones.settings.local
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/ricardoeduardosaucedo/DjangoAvanzado/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/Users/ricardoeduardosaucedo/DjangoAvanzado/lib/python2.7/site-packages/django/core/management/__init__.py", line 312, in execute
    django.setup()
  File "/Users/ricardoeduardosaucedo/DjangoAvanzado/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/ricardoeduardosaucedo/DjangoAvanzado/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/Users/ricardoeduardosaucedo/DjangoAvanzado/lib/python2.7/site-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/ricardoeduardosaucedo/Curso Django Avanzado/SistemaDiscusiones/apps/users/models.py", line 5
    class UserManager(BaseUserManager):
    ^
IndentationError: unexpected indent

【问题讨论】:

  • 检查缩进。您可能使用的是 tab 而不是 4 个空格。

标签: python django python-2.7 django-models


【解决方案1】:

回溯可能看起来很吓人,但在这种情况下,如果您从底部开始向上工作,则信息非常清楚。

  File "/Users/ricardoeduardosaucedo/Curso Django Avanzado/SistemaDiscusiones/apps/users/models.py", line 5
    class UserManager(BaseUserManager):
    ^
IndentationError: unexpected indent

错误消息告诉您Avanzado/SistemaDiscusiones/apps/users/models.py 的第 5 行出现缩进错误。

检查您在该行的开头没有任何空格,并且您没有使用制表符。如果您仍然无法解决问题,请编辑您的问题并发布该文件中的代码。

【讨论】:

  • 第 5 行的开头看起来仍然有空格。您需要删除这些空格,并根据需要修复以下行。
  • 非常感谢,已经正确,但现在我收到另一个错误:LookupError: No installed app with label 'user'
  • 这听起来像是一个不同的问题。您最好提出一个新问题,并显示完整的回溯以及您的 INSTALLED_APPS 设置。
【解决方案2】:
from django.db import models

from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin

    class UserManager(BaseUserManager):

        def _create_user(self, username, email, password, is_staff, is_superuser,
                **extra_fields):

            if not email:
                raise ValueError('El email debe de ser obligatorio')

            email = self.normalize_email(email)
            user = self.model(username=username, email=email, is_activate=True,
                    is_staff=is_staff, is_superuser=is_superuser, **extra_fields)
            user.set_password(password)
            user.save(using = self.db)
            return user

        def create_user(self, username, email, password=None,
                **extra_fields):    
            return self._create_user(username, email, password, False, False, **extra_fields)

        def create_superuser(self, username, email, password,
                **extra_fields):
            return self._create_user(username, email, password, True, True, **extra_fields)

    class User(AbstractBaseUser, PermissionsMixin):

        username = models.CharField(max_length=50, unique=True)
        email = models.EmailField(max_length=50, unique=True)
        first_name = models.CharField(max_length=100)
        last_name = models.CharField(max_length=100)
        avatar = models.URLField()


        objects = UserManager()

        is_activate = models.BooleanField(default=True)
        is_staff = models.BooleanField(default=False)

        USERNAME_FIELD = 'username'
        REQUIRE_FIELDS = ['email']

        def get_short_name(self):
            return self.username

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多