2015-03-13 22 views
0

我有一个名为Exam的模型。每个考试都有一组称为参与者的用户。我发现在Django中保留这样的设置的唯一方法是在用户模型中添加一个字段。但我更愿意写这个模型以尽可能独立,所以如果以后我想再次使用它,我可以在不改变用户模型的情况下做到这一点。那么如何处理这样的设置,而无需手动修改用户模型字段?Django在可重复使用的应用程序中的一个(许多) - 多对多关系

+0

用户真的可以只有一个考试吗?你确定你不想使用many2many吗? – codingjoe 2015-03-13 15:32:28

+0

顺便说一句,不要害怕修改用户模型。从一开始就使用客户模型实际上更容易。 – codingjoe 2015-03-13 15:33:53

+0

我希望每个用户在任何时候都有最多一次主动考试。他可以在考试之间切换,但不能同时参加两门考试。然而,多对多的关系同样适用,所以我将编辑帖子。谢谢 – Matrix 2015-03-13 15:40:29

回答

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。这不是保存交易,而是可以完成这项工作。你只会限制选择所有不相关的对象。

+0

我认为这正是我想要的。非常感谢你。 – Matrix 2015-03-13 16:06:41