Если вы используете несколько аргументов, это должно быть в кортеже (обратите внимание на дополнительные скобки):
'%s in %s' % (unicode(self.author), unicode(self.publication))
Как указывает EOL, функция unicode()
обычно принимает ascii-кодирование по умолчанию, поэтому, если у вас есть символы, отличные от ASCII, безопаснее явно передавать кодировку:
'%s in %s' % (unicode(self.author,'utf-8'), unicode(self.publication('utf-8')))
. А с Python 3.0 предпочтительнее использовать str.format()
вместо:
'{0} in {1}'.format(unicode(self.author,'utf-8'),unicode(self.publication,'utf-8'))