2016-05-15 41 views
4

我改组我的一个项目更可重复使用的,只是一般结构更合理,我现在越来越下面每当我跑makemigrations错误 - 我花了半天试图自己解决这个问题,但已经没有了搜索结果,需要一些帮助。我所做的是删除自定义用户模型我有设置这样我就可以使用Django内置的用户模型,我也命名空间我的应用程序的URL。我不希望有一堆的代码,但会做什么,但脏了这个职位,因为我希望回溯有我没有看到端倪。如果您正在查看这些信息并了解可能是错误的罪魁祸首,您能否就您需要提供帮助的问题咨询意见?谢谢。只会发生如果split()返回多于2个元素ValueError异常:值过多解压(预期2)在Django

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute 
    output = self.handle(*args, **options) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/core/management/commands/makemigrations.py", line 132, in handle 
    migration_name=self.migration_name, 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/migrations/autodetector.py", line 45, in changes 
    changes = self._detect_changes(convert_apps, graph) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/migrations/autodetector.py", line 128, in _detect_changes 
    self.old_apps = self.from_state.concrete_apps 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/migrations/state.py", line 166, in concrete_apps 
    self.apps = StateApps(self.real_apps, self.models, ignore_swappable=True) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/migrations/state.py", line 228, in __init__ 
    self.render_multiple(list(models.values()) + self.real_models) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/migrations/state.py", line 296, in render_multiple 
    model.render(self) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/migrations/state.py", line 585, in render 
    body, 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/base.py", line 158, in __new__ 
    new_class.add_to_class(obj_name, obj) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/base.py", line 299, in add_to_class 
    value.contribute_to_class(cls, name) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/fields/related.py", line 707, in contribute_to_class 
    super(ForeignObject, self).contribute_to_class(cls, name, virtual_only=virtual_only) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/fields/related.py", line 307, in contribute_to_class 
    lazy_related_operation(resolve_related_class, cls, self.remote_field.model, field=self) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/fields/related.py", line 84, in lazy_related_operation 
    return apps.lazy_model_operation(partial(function, **kwargs), *model_keys) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/fields/related.py", line 82, in <genexpr> 
    model_keys = (make_model_tuple(m) for m in models) 
    File "/Users/rooster/.virtualenvs/ddm_dev/lib/python3.5/site-packages/django/db/models/utils.py", line 13, in make_model_tuple 
    app_label, model_name = model.split(".") 
ValueError: too many values to unpack (expected 2) 
+0

我'假设make_module_tuple'你迭代的一些类型有太多许多钥匙被解开。 – sebenalern

+1

您能否提供更多的make_module_tuple代码,并且错误正在产生? – sebenalern

+0

那么这就是房间里的大象......我不知道那是什么;我认为这是一个内部Django的事情,这就是为什么我很难排除故障。 –

回答

3

此错误:

app_label, model_name = model.split(".") 
ValueError: too many values to unpack (expected 2) 

这意味着要么app_labelmodel_name中有一个点(.)。我的钱是对前者的型号名称是自动生成

+1

只需快速跟踪您的答案。这确实是一个('.'),但在此之前我无法找到他们的理由是,因为当我做了一个路径重命名我的应用程序更换后,它改变了所有的迁移和添加的应用程序名称('.') 。再次感谢你。我绝对学到了一些新的东西。 –

1

当您在模型定义在不正确的方法的另一个应用是指另一种模式也会发生这种情况。

检查这个错误报告 - https://code.djangoproject.com/ticket/24547

path should be of the form 'myapp.MyModel' and should NOT include the name of module containing models (which is usually 'models').

bug是在国家WORKSFORME,而且大多不会被吸收为固定。如果您在Pycharm使用重构工具,不慎整个项目,而不是单个文件重命名模型的名字也出现

6

此问题。这也影响迁移文件,结果,makemigrations命令不知道该做什么并抛出Value错误。

field=models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.CASCADE, to='books.models.Topic'), 

到:

我通过进入所有迁移文件和重命名这些线路修好了

field=models.ForeignKey(default=1, null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Topic'), 
+0

这只是发生,非常恼人手动必须从VCS更改恢复此。 – Bartvds

+0

是的,看起来像一个pycharm问题。 Pycharm将“更改为”选项并对迁移进行制动。 – Kostyantyn

相关问题