ValueError:相关模型u'mutech.branch'无法解析

时间:2015-04-12 05:43:05

标签: mysql django database django-models

我正在尝试在models.py文件中创建外键。但是在运行python manage.py migrate命令时我得到了以下错误,以前每件事情都没问题。即使我已撤消所有更改它仍然给出相同的错误,我也尝试删除我的数据库,但没有任何作用。

          Applying mutech.0004_sub_branch...Traceback (most recent call last):
      File "manage.py", line 10, in <module>
        execute_from_command_line(sys.argv)
      File "/home/rahul/mydjangoapp/jango/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
        utility.execute()
       .
       .
       .
       .
       .

      File "/home/rahul/mydjangoapp/jango/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1414, in resolve_related_fields
        raise ValueError('Related model %r cannot be resolved' % self.rel.to)
    ValueError: Related model u'mutech.branch' cannot be resolved
  

models.py文件 -

from django.db import models

class branch(models.Model):
    branch_title = models.CharField(max_length=50)

    def __unicode__(self):              # __str__ on Python 3
            return str(self.branch_title)   

class project(models.Model):
    project_title = models.CharField(max_length=50)
    project_image = models.ImageField(upload_to="images")
    project_desc = models.CharField(max_length=200)
    project_duration = models.CharField(max_length=50)
    branch = models.ForeignKey(branch)

    def __unicode__(self):              # __unicode__ on Python 2
            return str(self.project_title)
  

view.py文件是 -

from django.shortcuts import render, get_object_or_404, render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from mutech.models import *

def project_info(request):
    project_list = project.objects.all()
    branch_list = branch.objects.all()
    context = {'project_list':project_list , 'branch_list':branch_list }
    return render(request, 'mutech/project.html', context)

def project_branch_info(request):
    branch_list = branch.objects.all()
    context = {'branch_list':branch_list }
    return render(request, 'mutech/project_branch_info.html', context)

3 个答案:

答案 0 :(得分:6)

对我有用的解决方案是完全删除我的迁移文件夹和数据库,然后运行以下命令 -

  

python manage.py makemigrations

     

python manage.py migrate

因为外键错误导致我出现此错误,即使撤消后,也不会出现此错误。

我们正在删除应用程序中的迁移文件夹,因为实际问题在于该文件夹,并且迁移文件夹中没有任何特殊内容,它将使用运行命令的model.py文件重新创建 - python manage.py makemigrations 。解决方案就是删除Migration文件夹并使用命令重新创建它。

所以你需要做什么 -

  1. 从应用中删除迁移文件夹。
  2. 运行命令 python manage.py makemigrations 然后 python manage.py migrate
  3.   

    警告:此后数据库中的数据将丢失,因此仅在数据不重要时才执行此操作。

答案 1 :(得分:1)

这就是我解决这个问题的方法:

  1. 为您的相关模型创建新的ForeignKey来电tmp。运行迁移。
  2. 删除旧版ForeignKey并运行迁移。
  3. tmp重命名为旧的ForeignKey被调用的内容。运行迁移。
  4. 所以,你最终有三个迁移文件做一件事,但至少它做到了!

答案 2 :(得分:0)

此问题是由迁移中的循环依赖性引起的。在最新迁移之前运行的其他一些迁移是调用迁移,该迁移在模型重命名之前恢复状态。例如,您在foo中将模型bar重命名为xyzzy.migrations.0004_rename,但在应用迁移期间,xyzzy.migrations.0004_rename运行后bozotic.0002_bozo依赖于xyzzy.migrations.0001_initial,因此现在必须应用的迁移不会看到xyzzy.migrations.004_rename创建的状态。

我花了一个小时在我的项目中调试和修复此错误。

检查您的迁移依赖项并尝试手动调整依赖项,以便在运行迁移模型时处于所需状态