django - AttributeError:类型对象'file'没有属性'set_user'

Posted

技术标签:

【中文标题】django - AttributeError:类型对象\'file\'没有属性\'set_user\'【英文标题】:django - AttributeError: type object 'file' has no attribute 'set_user'django - AttributeError:类型对象'file'没有属性'set_user' 【发布时间】:2018-06-05 11:39:19 【问题描述】:

我创建了一个名为file 的模型。它运行良好,然后我在名为set_user 的类中创建了一个元素,它给出了一个错误。所以,我删除了它。但是,我认为它并没有删除我的数据库,因为我在尝试迁移时遇到了这个错误:

Traceback(最近一次调用最后一次):文件“manage.py”,第 10 行,在 execute_from_command_line(sys.argv) 文件“/usr/lib/python3/dist-packages/django/core/management/init.py”, 第 363 行,在 execute_from_command_line utility.execute() 文件 "/usr/lib/python3/dist-packages/django/core/management/init.py", 第 355 行,执行中 self.fetch_command(subcommand).run_from_argv(self.argv) 文件“/usr/lib/python3/dist-packages/django/core/management/base.py”,行 283,在 run_from_argv self.execute(*args, **cmd_options) 文件“/usr/lib/python3/dist-packages/django/core/management/base.py”,行 330,正在执行中 输出 = self.handle(*args, **options) 文件 "/usr/lib/python3/dist-packages/django/core/management/commands/makemigrations.py", 第 96 行,在句柄中 loader = MigrationLoader(None, ignore_no_migrations=True) 文件“/usr/lib/python3/dist-packages/django/db/migrations/loader.py”,行 52、在初始化 self.build_graph() 文件“/usr/lib/python3/dist-packages/django/db/migrations/loader.py”,行 203,在 build_graph self.load_disk() 文件“/usr/lib/python3/dist-packages/django/db/migrations/loader.py”,行 114,在 load_disk 中 migration_module = import_module("%s.%s" % (module_name, migration_name)) 文件 "/usr/lib/python3.6/importlib/init.py", 第 126 行,在 import_module 中 return _bootstrap._gcd_import(name[level:], package, level) File "", line 994, in _gcd_import File "",第 971 行,在 _find_and_load 文件中 “”,第 955 行,在 _find_and_load_unlocked 文件“”,第 665 行,在 _load_unlocked 文件“”,第 678 行,在 exec_module 文件“”,第 219 行,在 _call_with_frames_removed 文件“/home/hashir/website/one/migrations/0017_auto_20171222_2108.py”,行 11、在 类迁移(migrations.Migration):文件“/home/hashir/website/one/migrations/0017_auto_20171222_2108.py”,行 21、在迁移 field=models.ForeignKey(default=one.models.file.set_user, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), AttributeError: type object 'file' has 没有属性'set_user'

这里是models.py:

from django.db import models
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User

class file(models.Model):
    title = models.CharField(max_length=250)
    FILE_TYPE_CHOICES = (
        ('audio','Audio'),
        ('games','Games'),
        ('videos','Videos'),
        ('applications','Applications'),
        ('books','Books/Docs'),
        ('others','Others')
        )
    file_type = models.CharField(max_length=12,choices=FILE_TYPE_CHOICES,default='others')
    description = models.TextField(max_length=6000)

    def get_absolute_url(self):
        return reverse('one:user')

    def __str__(self):
        return self.title

【问题讨论】:

您没有提供足够的信息。请显示完整的回溯。 注意你的班级python.org/dev/peps/pep-0008/#class-names文件而不是文件的情况。 @Alasdair 我已加入 【参考方案1】:

只需从项目中删除迁移文件夹并再次应用迁移。 然后运行这 3 个命令:

python manage.py migrate yourapp zero
python manage.py makemigrations yourapp
python manage.py migrate yourapp

【讨论】:

这可能适用于您的情况,但并非适用于所有情况。在删除已应用的迁移之前请仔细考虑。您可能会冒着数据库和迁移不同步的风险,这可能很难修复。

以上是关于django - AttributeError:类型对象'file'没有属性'set_user'的主要内容,如果未能解决你的问题,请参考以下文章

Python AttributeError:“类”对象没有属性“名称”-SetUpClass

Django 1.8 AttributeError:模块没有属性'urls'

django - AttributeError:'AnonymousUser'对象没有属性'todo'

Django 3:AttributeError:'AdminSite'对象没有属性'Register' [关闭]

Django 2.2 + AttributeError:'str'对象没有属性'decode'

AttributeError:模块'django.db.models'没有属性'DataField'[关闭]