为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用CSV中的外键填充Django模型

如何使用CSV中的外键填充Django模型

牛魔王的故事 2021-04-04 10:18:00
我的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对象时类别的值永远不会为空


查看完整回答
反对 回复 2021-04-13
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号