我的model.py:# Riders models ----------------------------------------class CategoryTeam(models.Model): name = models.CharField(max_length = 256) def __str__(self): return self.nameclass Teams(models.Model): name = models.CharField(max_length = 256) code = models.CharField(max_length = 10) nation = models.CharField(max_length = 10) continent = models.CharField(max_length = 10) category = models.ForeignKey(CategoryTeam, on_delete=models.CASCADE,) def __str__(self): return self.name#-----------------------------------------------------#我要填充的脚本from basic_app.models import CategoryTeam,Teamsdef populateCat(): f = open('CategoryCSV.csv') reader = csv.reader(f) next(reader) for row in reader: # Create new User Entry category = CategoryTeam.objects.get_or_create(name=row[0])[0]def populateTeamat(): f = open('FantaDS Project - Teams.csv') reader = csv.reader(f) next(reader) for row in reader: # Create new User Entry team = Teams.objects.get_or_create( name = row[0], code = row[1], nation = row[2], continent = row[3], category = row[4] )[0]if __name__ == '__main__': print("Populating the databases Cat...Please Wait") populateCat() print('Populating Complete') print("Populating the databases Team...Please Wait") populateTeamat() print('Populating Complete')
1 回答

月关宝盒
TA贡献1772条经验 获得超5个赞
确保在创建Teams对象时类别永远不会为空,即,值来自csv的row [4]。换句话说,如果row [4]在任何时间点都为空,则将抛出异常,因为在Model类别中是强制性外键。要么做到
category = models.ForeignKey(CategoryTeam, on_delete=models.CASCADE, null=True, black=True)
或确保在创建Teams对象时类别的值永远不会为空
添加回答
举报
0/150
提交
取消