(我已经阅读了一些相关问题,但似乎没有人能解答我的特定问题,或者我可能误解了它们。)在我的应用程序中,我有一个模型 Kurs ,每个Kurs以这种方式分配给用户:
class Kurs(models.Model):
prowadzacy = models.ForeignKey(User)
我想从CSV填充我的Kurs数据库。每行的第0个元素是用户名。因此,在我的阅读器例程中,我写了以下内容(跳过,我希望,无关的细节):
n = Kurs()
n.prowadzacy = User.objects.get(username=row[0])
现在,在shell中,当我这样做时,我想到的是用户实例:
>>> User.objects.get(username='leszekwronski')
<User: leszekwronski>
但是当我运行我的阅读器例程时,它告诉我它实际上没有一个用户实例分配给'prowadzacy'字段:
ValueError: Cannot assign "'leszekwronski'": "Kurs.prowadzacy" must be a "User" instance.
我做错了什么?
(我认为也许我得到了用户的身份,所以我也半心半意地尝试了
n.prowadzacy = User.objects.get(id=User.objects.get(username=row[0]))`
但是出现了同样的错误。)
--------------------------编辑 这是我的整个读者常规:
from .models import *
import csv
def importcourses(filename):
dataReader = csv.reader(open(filename), delimiter=';', quotechar='"')
for row in dataReader:
if row[0] != 'Username': # Ignore the header row, import everything else
n = Kurs()
n.prowadzacy = User.objects.get(username=row[0])
n.nazwa = row[1]
n.opis = row[2]
n.kategoria = Kategoria.objects.get(id=row[3])
n.semestr = Semestr.objects.get(id=row[4])
n.ects = row[5]
n.godziny = row[6]
n.kanon = row[7]
n.otwarty = row[8]
n.save()
我认为其他领域的细节并不相关......
-----------------编辑2 在RichSmith的评论如下之后,我添加了
from django.contrib.auth.models import User
到读者程序。现在错误已更改为以下内容:
TypeError: int() argument must be a string or a number, not 'User'
并将错误分配给与之前相同的行。
----------------------编辑3: 让这成为我们所有新手的一个教训:-)重新启动shell后,一切正常。似乎RichSmith的想法是必要的解决方案!
答案 0 :(得分:1)