【问题标题】:I have some CSV data and I want to import into django models using DB relationship我有一些 CSV 数据,我想使用 DB 关系导入 django 模型
【发布时间】:2017-09-13 14:51:24
【问题描述】:

提前谢谢你。我有一个带有一些模型的 Django 数据库:

class District(models.Model):
    code = models.CharField("Code".encode('utf-8'),max_length=512, null=True)    
    name = models.CharField("Name".encode('utf-8'),max_length=512)

class Neighborhood(models.Model):
    code = models.CharField("Code".encode('utf-8'),max_length=512, null=True)    
    name = models.CharField("Name".encode('utf-8'),max_length=512)
    district = models.ForeignKey(District, on_delete=models.CASCADE)
    dHab = models.DecimalField("Densiy of Habitants".encode('utf-8'),max_digits=15, decimal_places=5, default=0, validators = [MinValueValidator(0)])

我需要导入一个 csv 文件来上传 District 和 Neighborhood 数据。

01 District 1
02 District 2
03 District 3

011 Neigborhood a (Belongs to District 1)
012 Neigborhood b (Belongs to District 1)
021 Neigborhood c (Belongs to District 2)
031 Neigborhood d (Belongs to District 3)
etc.

如果我上传一个 Neighborhood,我如何在插入数据库之前找到合适的 District,以便它们能够正确地相互关联?因为据我所知,Django 有一个 auto_increment 字段

【问题讨论】:

  • 您可以使用csv_data: db_pk 之类的方式创建字典并在插入Neighborhood 时使用它

标签: python django database csv


【解决方案1】:

如果您知道这些地区将有序,您可以保存对它们的引用并在以后使用它们。例如:

district_1 = District.objects.create(....)
# Use this to create the neighborhood
Neighborhood.objects.create(district=district_1, ....)

从这个意义上说,你不需要关心对象的主键,因为你已经有了对它的引用。

相反,您可以使用任何字段(不仅仅是主键)来获取区对象。

district_1 = District.objects.get(name="District 1")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2021-02-10
    • 2021-03-07
    • 2014-08-30
    • 2016-12-21
    • 2011-08-21
    • 2014-04-14
    相关资源
    最近更新 更多