我试图设置一个要用csv文件填充的模型,并使用其中一个字段作为外键:
首先,我尝试使用inspectdb在现有的postgresql表中创建模型,进行迁移,然后将要关联的字段类型从charfield更改为Foreignkey,但是出现错误
然后我尝试创建一个带有inspectdb描述的空模型,然后在postgresql中导入一个csv,最后将我想要的字段更改为Foreignkey。在管理站点中,我可以查看导入的数据和关系,但是当我查询模型时,foreignkey字段又出现了另一个错误,它不会让我迁移(无法识别charfield,它要求输入整数)
-我想要一个外键的csv列是charfield,当我在导入csv之前创建模型时遇到错误,然后检查postgres表中的数据类型是否为整数,可以将其设置为charfield吗? / p>
哪种工作流程最适合将csv导入模型并将字段之一用作外键(charfield类型)?
谢谢
这是要关联的模型:
class D_Roles(models.Model):
predio = models.CharField(max_length=254)
dest = models.CharField(max_length=254)
dir = models.CharField(max_length=254)
rol = models.CharField(max_length=254)
vlr_tot = models.FloatField()
ub_x2 = models.FloatField()
ub_y2 = models.FloatField()
instrum = models.CharField(max_length=254)
codzona = models.CharField(max_length=254)
nomzona = models.CharField(max_length=254)
geom = models.MultiPointField(srid=32719)
def __str__(self):
return self.rol
class Meta():
verbose_name_plural = "Roles SII"
我要使用csv填充的模型:
class Dom2015CertInf(models.Model):
id = models.CharField(primary_key=True, max_length=80)
nombre_archivo = models.CharField(max_length=180, blank=True, null=True)
derechos = models.CharField(max_length=120, blank=True, null=True)
dir_calle = models.CharField(max_length=120, blank=True, null=True)
dir_numero = models.CharField(max_length=120, blank=True, null=True)
fecha_certificado = models.CharField(max_length=50, blank=True, null=True)
numero_certificado = models.CharField(max_length=50, blank=True, null=True)
numero_solicitud = models.CharField(max_length=50, blank=True, null=True)
#Original field from inspectdb
#rol_sii = models.CharField(max_length=50, blank=True, null=True)
#FOREIGNKEY Changed after creating the model and importing the csv
rol_sii = models.ForeignKey(D_Roles, db_column='rol_sii', on_delete=models.CASCADE, default=0)
zona_prc = models.CharField(max_length=120, blank=True, null=True)
def __str__(self):
return str(self.numero_certificado)
class Meta:
managed = True
verbose_name_plural = "2015 Certificados Informaciones Previas"
ordering = ['numero_certificado']