3

所以首先,我想澄清一下,我正在尝试建立一对多的关系,而不是多对一。我已经了解 ForeignKeys 是如何工作的。

为了讨论,我简化了我的模型;在实际实现中,它们比这更丰富。

我有一个模型,称为 a ColumnDefinition

class ColumnDefinition(Model):
    column_name = CharField(max_length=32)
    column_type = PositiveSmallIntegerField()
    column_size = PositiveSmallIntegerField(null=True, blank=True)

我认为有一个注册表。每个注册表都有一组单独的列用于其输入和输出定义。我已经将理论上的“OneToManyField”放在那里以展示我正在尝试做的事情。

class Registry(Model):
    input_dictionary = OneToManyField(ColumnDefinition)
    output_dictionary = OneToManyField(ColumnDefinition)
    created_date = DateTimeField(auto_now_add=True, editable=False)

AColumnDefinition只与一个注册表相关。所以这不是多对多的关系。如果我把aForeignKey放在ColumnDefinition相反来创建反向关系,它只能创建一个反向,而我需要一个输入和输出反向。

ColumnDefinition如果我能绕过它,我 不想做任何事情,比如添加一个“column_registry_type”字段。

有没有人对如何解决这个问题有任何好主意?

谢谢!

4

2 回答 2

0

您可以而且应该ForeignKeyColumnDefinition. 只需确保为related_name其中至少一个指定一个值。 https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name

于 2013-09-04T21:31:16.680 回答
0

ForeignKeys您可以在上添加两个ColumnDefinition,一个用于输入,一个用于输出,并将它们分开related_names

class ColumnDefinition(Model):
    ...
    input_registry = models.ForeignKey(Registry, related_name='input_columns')
    output_registry = models.ForeignKey(Registry, related_name='output_columns')

然后,您可以访问一组列,例如registry.input_columns.

于 2013-09-04T21:31:35.727 回答