我有一些CSV数据,我想导入到Django模型使用DB关系

2024-06-02 04:55:27 发布

您现在位置:Python中文网/ 问答频道 /正文

先谢谢你。我有一个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文件上传地区和社区数据

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.

如果我上传一个社区,我如何在插入数据库之前找到合适的地区,这样他们就可以正确地相互关联?因为据我所知,Django有一个自动递增字段


Tags: todjango数据库modelmodelscodelengthmax
1条回答
网友
1楼 · 发布于 2024-06-02 04:55:27

如果你知道这些地区会井然有序,你可以保留它们的参考资料,以后再使用它们。例如:

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")

相关问题 更多 >