Django模型通用关系

时间:2016-05-24 23:18:20

标签: python django generics

我对Django中的泛型关系感到困惑。

我有一个评论模型,我希望Workflow和WorkflowItem模型能够有多个评论。

如果我这样做:

class Workflow(models.Model):
    comments = models.ManyToManyField(Comment)

class WorkflowItem(models.Model):
    comments = models.ManyToManyField(Comment)

然后我在评论类中放置什么来将评论链接到其中的一个基于它是什么或我需要通用关系?

另外说我想把属于Workflow模型的成员,我做

class Workflow(models.Model):
    comments = models.ManyToManyField(Comment)
    members = models.ManyToManyField(Person)

或其他什么?

1 个答案:

答案 0 :(得分:1)

正如您所说,您需要将评论链接回Workflow / WorkflowItem,我相信您可以按以下方式构建模型

class Workflow(models.Model):
    members M2M field

class WorkflowItem(models.Model):
    fields

class Comment(models.Model):
    name_of_your_generic_fk(Can be either Workflow/WorkflowItem or any content type for that matter)
    fields

使用这样的模型结构,如果它是在Workflow / WorkflowItem上创建的,则可以从注释中进行跟踪。

如果你多考虑一下,你可以明显地设计一个更好的解决方案! :)