_reverse_with_prefix() argument after ** must be a mapping, not set
错误代码:
def get_absolute_url(self): return reverse('blog:single',kwargs={'pk',self.pk})
错误:关键字参数kwargs是一个字典,键和值之间是冒号而不是逗号。改正为:
def get_absolute_url(self): return reverse('blog:single',kwargs={'pk':self.pk})
'' value has an invalid date format. It must be in YYYY-MM-DD format.
用python从csv文件向数据库导入数据时发生的错误
model如下:
class Pack(models.Model): DISCIPLINES = (('E', u'Electrical'), ('L', u'Piping'), ('M', u'Mechanical'),) STATUS = (('A', u'Accept'), ('C', u'Comments'), ('R', u'Reject')) subsystem = models.ForeignKey(Subsystem) pack_number = models.CharField(max_length=32) pack_name = models.CharField(max_length=128) discipline = models.CharField(max_length=12, choices=DISCIPLINES, null=True) inspect_date = models.DateField(null=True,blank=True) status=models.CharField(max_length=2,choices=STATUS,blank=True,null=True) def __str__(self): return self.pack_number
写入数据的代码如下:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MC_monitor.settings") ''' Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. ''' import django if django.VERSION >= (1, 7):#自动判断版本 django.setup() from MC.models import Pack f = open('CSV/Pack.csv') print (u"读取文件结束,开始导入!") WorkList = [] next(f) #将文件标记移到下一行 y = 0 for line in f: row = line.split(',') #按;对字符串进行切片 y = y + 1 WorkList.append(Pack(pack_number=row[1],pack_name=row[2],discipline=row[3], inspect_date=row[4] ,status=row[5],subsystem_id=row[6],)) Pack.objects.bulk_create(WorkList) print ("成功导入数据"+str(y)+"条") f.close()
csv中导入的新数据中,inspect_date字段时空的,但是尽管model的字段选项中写了null=True,blank=True,仍然提示错误。
后在Stack Overflow上找到了答案:
将inspect_date=row[4] 改为inspect_date=row[4] or None 后问题解决。