class Hero(models.Model):
talents = models.ManyToManyField(Talent)
(...)
class Talent(models.Model)
required_talents = models.ManyToManyField('self', symmetrical=False)
(...)
我想为Hero
创建方法has_required_talents(self, talent)
,它将检查这个Hero
是否有{Talent
。在
我试过了:
^{pr2}$但是,当我使用这些测试进行测试时,它无法正常工作:
class HeroTalents(TestCase):
def setUp(self):
self.hero=Hero('Duck')
self.hero.save()
def test_has_required_talents(self):
self.talent1 = Talent(name = "Overpower")
self.talent1.save()
self.talent2 = Talent(name = "Overpower2")
self.talent2.save()
self.talent2.talents_required.add(self.talent1)
self.assertFalse(self.hero.has_required_talents(self.talent2), "test1")
self.hero.talents.add(self.talent1)
self.assertTrue(self.hero.has_required_talents(self.talent2), "test2")
self.talent3 = Talent(name = "Overpower3")
self.talent3.save()
self.hero.talents.add(self.talent2)
self.assertTrue(self.hero.has_required_talents(self.talent3), "test3")
self.talent1.talents_required.add(self.talent3)
self.assertFalse(self.hero.has_required_talents(self.talent1), "test4")
需要做些什么才能使这项工作成功?在
这将是一种基于列表的方法。也可以将它们转换为集合:
^{pr2}$但是(我不知道确切的内部结构,你可以运行一些测试)第一种方法应该更快,因为没有转换。在
相关问题 更多 >
编程相关推荐