J'ai des tables comme les suivantes (définition du modèle Django, avec une base de données postgres sous-tend):Comment insérer dans un champ ForeignKey en utilisant SQL brut?
class Person(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=300)
class Owner(models.Model):
id = models.IntegerField()
person = models.ForeignKey(Person)
J'utilise un script Python pour configurer ma base de données à partir de fichiers CSV. La liste des fichiers bruts Propriétaires avec un identifiant entier et un champ entier 'person', qui correspond à l'entier dans Person.id.
Cependant, étant donné que la colonne 'personne' du propriétaire attend un objet Personne, comment puis-je écrire une chaîne SQL brute pour insérer une valeur dans Owner?
owner_id = 665
person_id = 330
sql_string = 'INSERT INTO owner (id, person) VALUES (' +
sql_string += owner_id + ', ' + ???? + ');'
Pourquoi 'sql_string =' INSERT INTO propriétaire (structidx, person) VALEURS ('+ sql_string + = owner_id +', '+ person_id +'); '' assez? Assurez-vous simplement d'insérer tous les objets Person en premier afin de ne pas violer la contrainte ForeignKey. – OmerGertel