【发布时间】:2020-04-20 10:31:17
【问题描述】:
我在 Django 中有一个模型:
class Subject(models.Model):
level = models.CharField(max_length=50)
subject_name = models.CharField(max_length=50)
teacher_name = models.ForeignKey(Teacher, on_delete=models.CASCADE)
total_seats = models.IntegerField()
subject_details = models.CharField(max_length=50)
对于Subject 表,我希望level 和subject_name 一起作为主键。事实上,我不希望任何其他对象具有相同的名称和级别。我知道我可以使用unique_together,但我在哪里提到primary_key = True?
【问题讨论】:
-
你没有。在 Django 中,可以不将多个属性一起用作主键。它已被多次请求,但不知何故显然不容易做到。
-
你知道我能做些什么吗?
-
为什么要设为主键?您可以使用
id = AutoField()。有一些库,但这些库都很旧(github.com/simone/django-compositekey 自 2015 年以来未更新)。主要问题不是数据库级别的主键,而是很多 Django 框架和构建在 Django 之上的包都假设some_subject.pk将是一个奇异值。
标签: django django-models