J'ai la classe suivante:Quelle est la bonne façon d'accéder __unicode __()?
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__())
Suis-je utiliser str() correctement dans unicode()?
et dans mon test où je regarde pour voir si l'enregistrement a été créé correctement suis-je encore OK pour appeler str() de cette manière, même si c'est censé être une méthode magique?
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)")
Ailleurs dans Django str() est appelée chaque fois que vous faites référence à l'instance d'objet lui-même, donc je me attendais à pouvoir tester comme ceci:
self.assertEqual(self.w, "Engineer (Test Project)")
Bon endroit, je l'ai modifié mon code. J'ai essayé d'appeler str() et unicode() et je reçois des erreurs 'AttributeError: objet « Whuffie » n'a pas d'attribut « str'' –
@Stuart str et unicode sont des fonctions intégrées Python. Vous essayez de les utiliser comme une méthode de modèle Django qu'ils ne sont pas. Références: http://docs.python.org/library/functions.html#str, http://docs.python.org/library/functions.html#unicode –
Je comprends maintenant, merci Ignacio, Thierry –