如何添加外键在表中使用现有的列而不丢失数据在django与sqlite3?



我想将一些具有IntegerField类型的表更改为外键而不丢失任何数据。那么,当我执行makemigration命令时,我如何在sqlite3和Django中做到这一点呢?

这是模型的样子:

class Sentences(models.Model):
actor_id = models.IntegerField(blank=True, null=True)
film_id = models.IntegerField(blank=True, null=True)
class Tokens(models.Model):
word_id = models.IntegerField(blank=True, null=True)
sentence_id = models.IntegerField(blank=True, null=True)
class Actors(models.Model):
...
class Words(models.Model):
...
class Films(models.Model):
...
每一个<<p> strong> _id 有IntegerField在第一个地方是指实际id从另一个表,但相反,我想修改它成为ForeignKey而不是IntegerField我怎么做修改?

id是每个表的主键。它对每一行都有唯一的值。外键是指引用另一个表的主键的列。要定义外键,请引用模型名,如

class Tokens(models.Model):
word = models.ForeignKey(Words, on_delete=models.CASCADE)
sentence = models.ForeignKey(Sentence, on_delete=models.CASCADE)
..........

迁移关系后(表)"Tokens"有两列1。Word_id和2。sentence_id参考:https://docs.djangoproject.com/en/3.1/topics/db/examples/many_to_one/

最新更新