Django ORM使用逗号作为分隔符?

时间:2014-04-30 14:11:07

标签: python django

我对Django有一些问题,Django ORM将逗号视为分隔符。

在下面添加示例代码。

print sub_categorys.description   # is printed as "drum class and drums feature" 
print sub_categorys.image_url     # is printed as ", bongo class no.jpg"

但是,真正的数据库行是description =“鼓类和鼓功能,bongo类”和image_url =“no.npg”

请帮帮我吧! 谢谢!

下面通过代码进行补充说明。

** model.py **
class SubCategory(models.Model):
    name = models.TextField( unique=True )
    description = models.TextField( null=True )
    image_url = models.URLField( null=True )


** views.py > code use to insert data to model **
with open('./classes/resource/model/csv/sub_category_model.csv', 'rb') as f:
    reader = csv.reader(f)
    is_first = True 

    for row in reader:
        if is_first:
            is_first = False
            continue

        sub_category = SubCategory(name=unicode(row[0], 'euc-kr'),
            description=unicode(row[3], 'euc-kr'),
            image_url=unicode(row[4], 'euc-kr'))

        try:
            sub_category.save()
        except Exception, e:
            logger.error(e)

1 个答案:

答案 0 :(得分:0)

使用逗号作为分隔符的ORM不是csv.reader。如果要导入包含逗号的字符串,则必须将它们用引号括起来。确保CSV文件包含正确的引用。在上面给出您的代码,您的CSV行应该是这样的:

foo,bar,baz,"drum class and drums feature, bongo class",no.jpg

如果出于某种原因这是一个问题,您可以选择其他分隔符,例如:

reader = csv.reader(csvfile, delimiter='|')

将作为输入:

foo|bar|baz|drum class and drums feature, bongo class|no.jpg

CSV module documentation

中提供了更多示例