构建Django成员资格的正确方法是什么?

weixin_38078374 2019-09-12 03:24:54

假设我有一个包含团队和成员的网站。我有一个团队模型和模型成员: class Team(models.Model): name = CharField() class Member(models.Model): name = models.CharField() team = models.ManyToManyField(Team) 在这种关系中,Team和Member使用的是ManyToManyField(成员可以有一个以上的团队)直接相关。 这意味着,我添加和删除团队成员认为,像这样: team.objects.add(member) # Add a member to a team team.objects.remove(member) # remove a member from a team 另一种方法是去除ManyToMany关系,使团队和成员之间的“会员制”的模式,像这样: class Membership(models.Model): is_active = BooleanField(default=True) team = models.ForeignKey(Team) member = models.ForeignKey(Member) 通过这种方式,将成员链接到一个团队我会get_or_create一个Membership实例。要删除或重新添加该成员到团队,我会切换is_active标志,而不是add()或remove()ManyToMany的关系。 是不是更容易出错使用直接关系到从团队add()和remove()成员,或者是它更好地在中间Membership模型使用get_or_create? 或者,要么正确和罚款使用?








...全文
8 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38080704 2019-09-12
  • 打赏
  • 举报
回复

我认为你真正需要的是决定 - >你需要一个extra data on your M2M relationship?因为你的中间模型就是这样。我无法找到它作为一个不太容易出错的地方,它的is_active标志的主要区别在于,这给了你一些有关过去成员资格的历史信息。你需要这些数据吗?如果你这样做 - 采用这种方法。如果你只是因为你认为它不太容易出错,那么对于我来说你正在解决错误的问题。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧