我有以下课程:
class Whuffie(models.Model):
"""Holds the amount of whuffie an engineer has earned in each project"""
engineer = models.ForeignKey(User)
project = models.ForeignKey(Project, related_name="related_project")
whuffie = models.IntegerField(blank=False, null=False
experience = models.IntegerField(blank=False, null=False)
mana = models.IntegerField(blank=False, null=False)
def __unicode__(self):
return u"%s (%s)" % (self.engineer.__str__() + self.project.__str__())
我在 unicode ()中正确使用 str ()?
在我的测试中,我想看看记录是否已正确创建,我仍然可以以这种方式调用 str (),即使它应该是一种神奇的方法吗? / p>
def setUp(self):
"""Set up the shared test data."""
self.w = Whuffie.objects.get(pk=1)
def testWhuffieNameIsProjectAndEngineer(self):
"""
Tests that the name of the individual whuffie line is "Engineer (Project Name)".
"""
self.assertTrue(self.w != None)
self.assertEqual(self.w.__str__(), "Engineer (Test Project)")
在Django的其他地方 str()会在您引用对象实例本身时调用,因此我希望能够像这样进行测试:
self.assertEqual(self.w, "Engineer (Test Project)")
答案 0 :(得分:4)
self.assertEqual(unicode(self.w), u"Engineer (Test Project)")
和
def __unicode__(self):
return u"%s (%s)" % (self.engineer, self.project) #unicode will be called automatically
答案 1 :(得分:1)
没有。 __unicode__()
必须返回unicode
。
class Whuffie(models.Model):
...
def __unicode__(self):
return u"%s (%s)" % (self.engineer + self.project)
如果要访问对象的unicode()
方法,请致电__unicode__()
。