Django迁移错误:没有名为u' DO_NOTHING'

时间:2017-03-15 09:56:52

标签: python django

我一直试图在Django 1.9中为我的模型添加一个外键,并在Django Docs上按照on_delete='DO_NOTHING'选项添加,但版本为1.10。我没有任何问题地运行python manage.py makemigrations,但当我试图运行python manage.py migrate时,我得到了错误:

django.core.exceptions.FieldDoesNotExist: Entrance has no field named u'DO_NOTHING'

意识到我的错误,我将选项更改为on_delete=models.DO_NOTHING并再次运行makemigrationsmigrate,但我仍然遇到同样的错误:

django.core.exceptions.FieldDoesNotExist: Entrance has no field named u'DO_NOTHING'

在迁移文件中看起来有问题。不太熟悉Django的内部工作原因所以我不知道在哪里解决这个问题。有什么想法吗?

4 个答案:

答案 0 :(得分:0)

当您使用// from the given entity, track back to entity1, the start of the chain MATCH (n3:entity3)<-[:Relationentitys*0..4]-(en1:entity1) WHERE n3.id='5084712c801f' AND n3.tag='entity3' // now get the full chain from entity1 MATCH (en1)-[:Relationentitys*0..4]->(en) RETURN COLLECT(en) as entities 添加迁移时,django会生成迁移。然后,您使用on_delete='DO_NOTHING'生成了新的迁移。因此,您必须删除on_delete=models.DO_NOTHING中的两个迁移,然后再次执行makemigrations。

希望它有所帮助!

答案 1 :(得分:0)

那应该是

on_delete=models.DO_NOTHING

答案 2 :(得分:0)

在db中查看django_migrations表。在那里查找上次迁移的迁移文件 并将此文件与下一个迁移文件进行比较。 如果数据库中的所有内容都正常,您也可以手动添加上次迁移文件。

答案 3 :(得分:-1)

对我来说有用的是进入@Configuration @EnableResourceServer protected static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter { public void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .anyRequest().permitAll(); } } 目录并浏览my_project/myapp/migrations个文件并通过删除相应的*.py项来修复operations变量(下面) to_field='DO_NOTHING'项。希望这不会造成其他问题。

field