【发布时间】:2021-03-05 01:51:37
【问题描述】:
我有以下型号:
class School(models.Model):
principal = models.OneToOneField(User, on_delete=models.CASCADE)
User 模型是 Django 的标准验证模型。我只想让 school.principal 成为属于 Principals 组的 User 模型的实例。 (按组,我也是指 Django 的股票认证Group 模型)。
我基本上被卡在检查的实施方式上:
class School(models.Model):
principal = models.OneToOneField(User, on_delete=models.CASCADE)
class Meta:
constraints = [
models.CheckConstraint(
check=<allow_only_User_instances_that_belongs_to_the_Principals_group>,
name='principal_is_actually_a_principal',
),
]
如果需要特定于数据库/Django 版本的实现,我正在使用以下堆栈:
- Python 3.8
- Django 3.1
- PostgreSQL 12.1
我知道我可以在应用程序级别添加检查,但是拥有数据库约束让我确信我的数据始终处于有效状态。任何帮助或推动正确方向都将不胜感激。
谢谢!
【问题讨论】:
标签: python django django-models