Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据库中的django ORM外键数据未填充到模型中_Python_Django_Sqlite_Orm_Django South - Fatal编程技术网

Python 数据库中的django ORM外键数据未填充到模型中

Python 数据库中的django ORM外键数据未填充到模型中,python,django,sqlite,orm,django-south,Python,Django,Sqlite,Orm,Django South,在Django,我有三种型号: class Player(models.Model) team = models.ForeignKey('Team') class Team(models.Model) name = models.CharField(max_length=20) coach = models.ForeignKey('Coach') class Coach(models.Model) name = models.CharField(max_len

在Django,我有三种型号:

class Player(models.Model)
    team = models.ForeignKey('Team')

class Team(models.Model)
    name = models.CharField(max_length=20)
    coach = models.ForeignKey('Coach')

class Coach(models.Model)
    name = models.CharField(max_length=255)
我使用South更改模型,将coach外键添加到球员:

class Player(models.Model)
    team = models.ForeignKey('Team')
    coach = models.ForeignKey('Coach')
我在数据迁移中迁移数据:

players = orm.Player.objects.all()
for player in players:
    player.coach = player.team.coach
    player.save()
当我在数据库(SQLite版本3.7.2)中检查数据时,数据迁移良好:

但当我试图通过Django ORM访问数据时:

>> player = Player.objects.get(pk=1)
>> player.coach
---------------------------------------------------------------------------
DoesNotExist                              Traceback (most recent call last)

/home/pat/Development/baseball/<ipython console> in <module>()
/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/related.pyc in __get__(self, instance, instance_type)
    299                 if self.field.null:
    300                     return None
--> 301                 raise self.field.rel.to.DoesNotExist
    302             other_field = self.field.rel.get_related_field()
    303             if other_field.rel:

DoesNotExist:
>player=player.objects.get(pk=1)
>>球员教练
---------------------------------------------------------------------------
DoesNotExist回溯(最近一次呼叫最后一次)
/主场/帕特/发展/棒球/in()
/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/Django/db/models/fields/related.pyc in_uuuuuget_uuu(self、instance、instance_utype)
299如果self.field.null:
300返回无
-->301将self.field.rel.to.DoesNotExist提升
302其他_字段=self.field.rel.get_相关_字段()
303如果其他_field.rel:
DoesNotExist:
几点注意:

这不是实际的代码,但基本上与它完全匹配。不要要求查看实际代码,因为我无法共享它-它是机密的,不属于我。但是,我可以使用这个类似的示例提供进一步的细节


在创建迁移之前,我不知道我需要球员模型上的coach字段,所以我手动将其添加到现有迁移中。运行迁移时,我没有收到任何错误,而且,正如我所说,迁移在数据库级别似乎工作正常。

数据库中是否有id==4的沙发?我有。这是一个棘手的问题-如此棘手的事实上,我不能再重新创建它。我删除了数据库,使用迁移前模式重新创建了它,用迁移前格式化的数据加载了一个fixture,运行了迁移,现在它可以工作了。一定有解释,我只是不知道是什么。
>> player = Player.objects.get(pk=1)
>> player.coach
---------------------------------------------------------------------------
DoesNotExist                              Traceback (most recent call last)

/home/pat/Development/baseball/<ipython console> in <module>()
/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/db/models/fields/related.pyc in __get__(self, instance, instance_type)
    299                 if self.field.null:
    300                     return None
--> 301                 raise self.field.rel.to.DoesNotExist
    302             other_field = self.field.rel.get_related_field()
    303             if other_field.rel:

DoesNotExist: