Django主键不存在

塞缪尔·巴尼特

我有一个脚本,用于从Django中的.txt文件填充sqlite3数据库,但是一旦将数据加载到其中,我似乎就无法使用pk引用对象。我可以通过执行./manage.py shell并导入City模型来确认数据已加载,并且这样做City.objects.all()表明已将模型加载到数据库中,但是如果我这样做,City.object.get(pk=1)则认为该City对象不存在。

过去,我在数据库方面遇到了一些问题,因此最近我确实./manage.py flush使用脚本重新输入了数据。这是事情开始成为问题的时候。有任何想法吗?

我也知道我并不需要严格的uniqueID值,但我不认为这会导致问题,而过去并没有。

用于加载数据的脚本:

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mygame.settings")
from geogame.models import City

f = open("testing.txt", 'r').readlines()

i = 1

for line in f:
    line = line.strip('\n')
    line = line.split('\t')
    line[6] = 1
    line[7] = 100
    c = City(name=line[1], uniqueID=i, xcoord=int(line[3]), ycoord=int(line[2]), country=line[4], population=line[5], times_played=line[6], average_distance=line[7], difficulty_rating=line[8])
    c.save()
    i+=1

models.py文件

from django.db import models

class City(models.Model):
    name = models.CharField(max_length=50)
    uniqueID = models.IntegerField(default=0)
    ycoord = models.IntegerField(default=0)
    xcoord = models.IntegerField(default=0)
    country = models.CharField(max_length=50)
    population = models.IntegerField(default=0)
    times_played = models.IntegerField(default=0)
    average_distance = models.FloatField(default=0)
    difficulty_rating = models.FloatField(default=0)

    def __unicode__(self):
        return self.name

和错误消息:

>>> City.objects.get(pk=1)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/django/db/models/manager.py", line 127, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/db/models/query.py", line 334, in get
    self.model._meta.object_name
DoesNotExist: City matching query does not exist.
卡西马尔巴卡利

尝试添加id=ic = City()这样,每次创建一个新ID时,ID都会添加1。

c = City(id=i, name=line[1], uniqueID=i,
         xcoord=int(line[3]), ycoord=int(line[2]),
         country=line[4],
         population=line[5], times_played=line[6], average_distance=line[7],
         difficulty_rating=line[8])  

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章