如何使用ManyToMany关系来跟踪用户成员资格?

时间:2011-09-09 04:03:21

标签: django entity-relationship

在多个组中存储用户的成员资格以便能够恢复需要什么样的关系:

  1. 某些群体中用户参与的历史(加入日期,退出日期)
  2. 当前用户组列表(按连接顺序)以确定其当前状态
  3. 在给定时间段内参与该群组的用户列表
  4. 我猜它是ManyToMany(或者是一种丑陋的OneToMany),但是无法弄清楚如何使用它;需要一个最小的例子,最好是 - 对于Django的模型。

    此外,当需要删除某些组/用户时,会出现哪些一致性问题?

1 个答案:

答案 0 :(得分:1)

  • 成员
  • groupmembers

Groupmembers是您的联接表,其内容如下:

  • 成员(一名成员有许多小组成员记录)
  • 组(一组有多个组成员记录)
  • 创建日期
  • 删除日期(在适用之前保留为空)

所以符合您的要求:

  1. 使用组查询组成员并按日期排序
  2. 使用成员查询组成员(按创建日期排序)
  3. 查询具有组的组成员并且删除为空(或在日期范围内)