Python 数据库中的django ORM外键数据未填充到模型中
在Django,我有三种型号: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
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: