Django练习遇到的错误记录

_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 后问题解决。

原文地址:https://www.cnblogs.com/dreamkeeper/p/7636552.html