gpt4 book ai didi

django - 如何删除Django中自动生成的ManyToMany表中的冗余ID字段?

转载 作者:行者123 更新时间:2023-12-04 18:44:37 25 4
gpt4 key购买 nike

我的 models.py 中有两个类文件:

class Person:
person_name = models.CharField(max_length = 50)

class Course:
course_name = models.CharField(max_length = 50)
course_person = models.ManyToManyField(Person)

在我修改后的示例中,一个人参加了多门类(class),而许多人参加了一门类(class),因此是 ManyToMany。

当我让 Django 自动生成我的表时,我得到一个额外的 ID field 。
我想要自动生成的 person_course由两个复合键组成的 manytomany 表 person_idcourse_id只要。注意:它们都是自动生成的、自动递增的字段。

我还尝试定义我的 ManyToMany 类并尝试使用关键字 through= 链接字段。 ,但这没有帮助。

我问过谷歌,但没有太多帮助。你们中的许多天才可以提供一些提示:)

最佳答案

Django 当前 does not support composite primary key by default

您可以做的是保留自动生成的 id作为(代理)主键,然后定义一个 unique_together 关系在through table 。

class Meta:
unique_together = (course, person)

这样,您可以保证直通表中的唯一条目,并且当您引用 id 时。它相当于引用唯一的 (course, person)无论如何,这就是我们想要的。

有一些 third party apps如果需要,可以实现此功能。但是,除非绝对必要(例如遗留系统支持),否则我会保持简单并实现 unique_together .

关于django - 如何删除Django中自动生成的ManyToMany表中的冗余ID字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com