我正在制作一个 django 应用程序,但我遇到了一个问题。我正在尝试定义一个模型,其中一个ForeignKey
将依赖于另一个模型ForeignKey
。
描述部分
我的申请是关于做出选择的。
因此,假设您decision
要制作 a,adecision
有多个choice
s,并且 achoice
有 a status
(由于其他约束)。
Astatus
可以用于多个choices
,但 astatus
只能与一个相关,即与链接到decision
的同一个choice
。
数据库架构
它不是固定的,如果需要可能会更改:
,____________, ,____________,
| | 1, n 1, 1 | |
| Decision |------------------| Status |
|____________| |____________|
| |
| 1, n | 1, n
| |
| 1, 1 |
,_____|______, |
| | 1, 1 |
| Choice |-------------------------'
|____________|
代码
这是我当前的(简化的)(不工作的)代码:
class Decision (models.Model):
name = models.CharField (max_length = 63)
class Status (models.Model):
value = models.CharField (max_length = 63)
decision = models.ForeignKey (Decision)
class Choice (models.Model):
name = models.CharField (max_length = 63)
decision = models.ForeignKey (Decision)
status = models.ForeignKey (Status, limit_choices_to = {'decision' : decision})
这里的重要部分是limit_choices_to = {'decision' : decision}
.
额外信息
我发现了另一个 SO 问题(在 django 中,如何根据同一模型中的另一个字段限制对外国字段的选择?)处理相同的问题,但问题已经过时了,最好的答案是依赖外部应用程序(django-smart-selects)。
我宁愿不必使用外部的东西,而且我不明白为什么仅使用 Django 无法解决像 3 表关系这样简单的问题!
如果有人有任何解决方案或任何建议,请告诉我。