如何将 table 与多个其他 table 相关联,同时仍然具有一对多关系?
How to relate a table to multiple other tables while still having one-to-many relationship?
假设我有以下模型 类:
# Inspection target
class Target(models.Model):
...
# Issue found during the inspection
class Issue(models.Model):
target = models.ForeignKey(Target, on_delete=models.CASCADE, related_name='issues')
因此,一个 Target
可以有多个相关的 Issue
,而一个 Issue
总是与一个 Target
相关。现在,假设我像这样添加一个新的 table:
# Document that describes either a target or an issue
class Document(models.Model):
...
... 我希望 Target
s 和 Issue
s 都引用 Document
s,但单个 Document
只能与一个对象,Target
或 Issue
。这可能与 Django 相关吗?
是的,您对 Target
和 Issue
的定义完全符合您的要求。一个 Target
可以有多个 Issue
,其中一个 Issue
只能与一个 Target
.
有关系
现在你想要 Target
和 Issue
引用 Document
。
为此,您的 models.py
将如下所示。
class Document(models.Model):
...
target = models.ForeignKey(Target, related_name='target_documents', on_delete=models.CASCADE, null=True, blank=True)
issue = models.ForeignKey(Issue, related_name='issue_documents', on_delete=models.CASCADE, null=True, blank=True)
...
然后,您必须在 views.py
中处理其余部分,您必须只允许一个值 Target
或 Issue
。
假设我有以下模型 类:
# Inspection target
class Target(models.Model):
...
# Issue found during the inspection
class Issue(models.Model):
target = models.ForeignKey(Target, on_delete=models.CASCADE, related_name='issues')
因此,一个 Target
可以有多个相关的 Issue
,而一个 Issue
总是与一个 Target
相关。现在,假设我像这样添加一个新的 table:
# Document that describes either a target or an issue
class Document(models.Model):
...
... 我希望 Target
s 和 Issue
s 都引用 Document
s,但单个 Document
只能与一个对象,Target
或 Issue
。这可能与 Django 相关吗?
是的,您对 Target
和 Issue
的定义完全符合您的要求。一个 Target
可以有多个 Issue
,其中一个 Issue
只能与一个 Target
.
现在你想要 Target
和 Issue
引用 Document
。
为此,您的 models.py
将如下所示。
class Document(models.Model):
...
target = models.ForeignKey(Target, related_name='target_documents', on_delete=models.CASCADE, null=True, blank=True)
issue = models.ForeignKey(Issue, related_name='issue_documents', on_delete=models.CASCADE, null=True, blank=True)
...
然后,您必须在 views.py
中处理其余部分,您必须只允许一个值 Target
或 Issue
。