可重用应用程序中的 Django 单(多)对多关系

Django One(Many)-To-Many Relation in reusable app

我有一个名为 Exam 的模型。每个考试都有一组称为参与者的用户。我发现在 Django 中保留此类集合的唯一方法是在用户模型中添加一个字段。但我更愿意将这个模型写得尽可能独立,这样如果以后我想再次使用它,我可以在不改变我的用户模型的情况下做到这一点。那么如何在不手动修改用户模型字段的情况下处理这样的设置?

关于您的评论,您可以这样做:

class Exam(models.Model):
    participants = models.ManyToMany(settings.AUTH_USER_MODEL, through='Participation')

class Participation(models.Model)
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    exam = models.ForeignKey('Exam')
    active = models.BooleanField(default=False)

另一种选择是使用 Django 的 limit_coices_to。它不是事务保存,但可以完成这项工作。您只需将选择限制在所有不相关的对象上。