django 中的单向一对多和多对可能

Liz*_*Liz 0 django entity-relationship django-models

我是 Django 的新手。我有 2 个简单的对象,我们称它们为 - File 和 FileGroup: - FileGroup 可以保存一个文件列表,根据“顺序”字段进行排序。- 每个文件可以与多个组相关联。

所以基本上,数据库表将是:1) File 2) File_Group 3) File_Group_Mapping 表,除了文件和文件组的 fk 之外,还有一个名为“order”的列。

这里存在多对多关系,但 File 对象不应该知道 FileGroup 的存在(在我的情况下没有意义)

我的问题 - 有没有办法在这里创建单向多对多/一对多关系?如何使用 django 对其进行建模?

我找不到通过 django 使其成为单向的方法。我看到了一个使用类似的解决方案 -

class FileGroup(...):
    files = models.ManyToManyField(File, through='FileGroupMapping')
Run Code Online (Sandbox Code Playgroud)

但这将使 File 对象知道 FileGroup。

我也可以通过在模型文件中映射 File_Group_Mapping 表来做到这一点 -

class FileGroupMapping(...):
     files = models.ForeignKey(File)
     groups = models.ForeignKey(FileGroup)
     order = models...
Run Code Online (Sandbox Code Playgroud)

通过 django 执行此操作的最佳方法是什么?

谢谢

Rau*_*wal 5

我也是一个休眠用户。我完全理解您在寻找什么,只需尝试在您的多对多关系中使用属性“对称 = False”,这将使关系单向。

class FileGroup(models.Model):
  files = models.ManyToManyField(File, symmetrical = False)
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题!