Django中的非主外键

发布于 2021-01-29 16:01:31

我要从Django站点访问旧数据库中的两个表。他们看起来像这样:

Table A
id (int, primary key)
name (string, unique)
...

Table B
id (int, primary key)
name
record_date
(name, record_date are unique together)
...

如何告诉我的Django模型TableABon有一对多关系A.name=B.name?常规ForeignKey关系需要B使用A.id而不是name,但是我无法修改现有旧数据库的结构。

关注者
0
被浏览
211
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用to_fielddb_column选项。

    class B(models.Model):
        name = models.ForeignKey(A, to_field="name", db_column="name")
    

    创建外键后,可以按以下方式访问值和相关实例:

    >>> b = B.objects.get(id=1)
    >>> b.name_id # the value stored in the 'name' database column
    >>> b.name # the related 'A' instance
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看