django中用外键仍是非外键?建议尽可能用外键。

标题:django中用外键仍是非外键?建议尽可能用外键。     # order = models.ForeignKey(     #     'oms.Order',     #     related_name='order_history',     #     on_delete=models.CASCADE,     #     verbose_name='订单(FK)')     order_id = models.CharField(max_length=20, null=True, verbose_name='订单id') 用外键方式,django会检查。好比不容许非法的或不存在此数据库中的order_id. 删除数据库中的记录时,也要先删除历史表,才能删除此order_id的记录。看起来麻烦,但实际上,这样有利于保证数据的一致性和正确性。 固然,django查表也更为方便。能够联合查表,prefetch()和select_related()都创建在FK外键的基础上。 个人建议是:在同一个django工程中,可以用外键的地方,坚定用外键。 若是一个entity_id,同时想表示多张表的外键,那怎么办呢?个人建议是定义不一样的多个外键。