我的 Django 应用程序有几种不同类型的用户。对于我的项目模型,我想将 pm 列限制为仅属于“项目经理”组的用户对象。在浏览 SE 并搜索了一下之后,我添加了“limit_choices_to”并分配了一个 Q 对象。
但是,当我设置一个我确信会失败的 TestCase 时,似乎任何用户都可以添加为 pm。模型和测试用例如下:
class Project(models.Model):
name = models.CharField(max_length=50, unique=True)
tracker = models.IntegerField(max_length=5)
pm = models.ForeignKey('auth.User', limit_choices_to=Q(groups__name = 'Project Manager'))
class ProjectTestCase(TestCase):
def setUp(self):
self.name = 'Crappy Project'
self.tracker = 38493
self.pm = User.objects.create_user('username', 'user@example.com', 'password')
proj = Project.objects.create(name=self.name, tracker=self.tracker, pm=self.pm)
proj.save()
def test_proj_creation(self):
# Check stored values
proj_zero = proj_in_db[0]
self.assertEquals(proj_zero.name, self.name)
self.assertEquals(proj_zero.pm, self.pm)
如果我没有将用户分配到任何组,我试图理解为什么我的测试会继续通过。另外,“groups__name”记录在哪里?我无法在 Django 文档中引用它。