Django One(很多)-To-Many关系在可重用的应用程序中

时间:2015-03-13 15:18:20

标签: django django-related-manager

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

1 个答案:

答案 0 :(得分:0)

关于你的评论,你可以做这样的事情:

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。它不是事务保存,但可以完成这项工作。您只需限制所有非相关对象的选择。