假设我有两个非常基本的模型类--为了简单起见,让我们给它们命名为一个计划和一个任务。我的目标是强迫每个计划都有四个不同的任务(顺序并不重要)。对于这种“多到多、有固定数量的相关实例”的情况,有什么好的做法吗?
from django.db import models
class Task(models.Model):
name = models.CharField(max_length=20)
class Plan(models.Model):
name = models.CharField(max_length=20)
# four_tasks = ?
我搜索了Django文档,但那里没有答案(或者我不知道如何搜索)。我想到了计划中的4个单独的外键(通过为这些外键设置related_name
),或者标准的多到多的关系。这两种解决方案都需要额外的检查,以确保实际上有4种不同的任务,它们在我看来很难看。
发布于 2022-11-12 06:35:15
在我看来,从数据库的角度来看,最佳实践是将4个单独的外键(如您所认为的)作为主键(复合键)。
这可以在Django中使用uniqueConstraint来实现,这是比在一起选项更好的方法:
UniqueConstraint提供了比unique_together更多的功能。unique_together在将来可能会被废弃。
编辑:如果您想知道如何使用它,下面是一个回答
https://stackoverflow.com/questions/74413583
复制相似问题